|
whether it is possible to calculate offset value? and Using offset, the struct variable value is fetched from the memory loaction.
|
|
|
|
|
Calculate Offset Value?? why?? Albert has given a very good suggestion. why not try that?
Every new day is another chance to change your life.
|
|
|
|
|
My senior engineer Implemented offset table procedure concept. Using offset table particular structure variable value is fetched from memory location and whenever structure get updated or modified then obviously offset table get modified or changed.Now days it became big problem for us. my question is whether albert idea is effect than this offset table procedure or any other suggestion is there to implement.
|
|
|
|
|
Using an offset value for this is just silly. There's no practical purpose and adds complexity with no benefit.
|
|
|
|
|
shanmugarajaa wrote: my application consists of structure with 200 member variable.
Uhm...
Is that really needed?
Veni, vidi, vici.
|
|
|
|
|
Long year ago my senior engineers designed like that and i can't change those things. now my aim is to findout new way to get value for those structure variable without using offset table... any other choice is there?
|
|
|
|
|
200 member variables!
Holy crap! Are they all named as badly as these? Just how is a user supposed to know the relevance of what IS stored at x1[100]?
Apart from that, quite simply your app, which contains the struct instance, lets say it is called strinst, when asked for the value x1[100] just returns strint.x1[100], probably printfed into a string, for display.
==============================
Nothing to say.
|
|
|
|
|
But they are not created instant for an structure... instead of that they calculated offset value for each variable which is present in the structure. I dont know why they using such procedure...
|
|
|
|
|
So you have the memory address, and you know the structure format, just cast the address to a struct pointer and access it as mystrinstptr->x1[100]
If you dont have access to the memory you cant do anything.
==============================
Nothing to say.
|
|
|
|
|
Hi,
It sounds to me like you want to do this with the compiler preprocessor. Yes you can do this but it will be very ugly indeed. You will need to build the structs with #define statements and you can retrieve the member names with the #NAME directive[^]. You can get the offset to the struct members with the FIELD_OFFSET macro.
Best Wishes,
-David Delaune
|
|
|
|
|
I wrote a file using WriteFile, and then I read the file back and used swscanf_s, sort of using swprintf_s backwards thinking that it will just pick up the data and assign it.
So I wrote the file like this
swprintf_s( pzDataBuffer_Project, L"PROJECT: %s; %s; %s; %s; %s; %s;\r\nENDPROJECT\r\n", pzProject.szProject_Name, pzProject.szProject_Type, pzProject.szProject_Path, pzProject.szProject_DomainName, pzProject.szProject_LicenseKey );
To produce this, the file contents, Another line of code create the prefix
Internet Commerce Engine 5 Project File, Format Version 1.00
Site Administrator 2012
PROJECT: Dinostone; North American Standard Edition 2012; C:\NASE2012_Projects\Dinostone; www.dinostone.com; B1M6-19M2-MEM0-6L6J; 銁녪;
ENDPROJECT
And then read the file, and used swscanf_s to assign the pointers
iReturnFields = swscanf_s( pzDataBuffer, L"PROJECT: %s; %s; %s; %s; %s; %s;\r\nENDPROJECT\r\n", szProject_Name, szProject_Type, szProject_Path, szProject_DomainName, szProject_LicenseKey )
DWORD dwErrorCode = GetLastError()
The information on msdn was sort of vague,
Question:
Is my format not possible for swscanf_s, to assign the pointers?, or do I just have a syntax error in my format?
|
|
|
|
|
jkirkerx wrote: Is my format not possible for swscanf_s, to assign the pointers?, or do I just have a syntax error in my format? Can't you just view the variables using the debugger to see if they contain the proper values?
If there's a syntax error, the compiler should tell you.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
I did use the debugger, and it never generated an error, until I did some experimenting and generated an i/o error.
I'm way off base here on implementation, and I'm going to send this code to the trash and start again.
|
|
|
|
|
you need to change your file format and also need to change the parsing style. it wont work. swscanf_s function stop reading when it gets a space
|
|
|
|
|
johny10151981 wrote: swscanf_s function stop reading when it gets a space Not necessarily.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
Back to the drawing board for me.
|
|
|
|
|
Hi,
How can I get the directory
"C:\Documents and Settings\Default User\Application Data"
I tried with SHGetSpecialFolderLocation but no result.
|
|
|
|
|
According to this[^], it is no longer supported. Have you tried to use SHGetFolderLocation[^] instead?
Chris Meech
I am Canadian. [heard in a local bar]
In theory there is no difference between theory and practice. In practice there is. [Yogi Berra]
posting about Crystal Reports here is like discussing gay marriage on a catholic church’s website.[Nishant Sivakumar]
|
|
|
|
|
No i didn't try, Also I don't know how set the Flag to obtient the path.
|
|
|
|
|
SHGetFolderPath() , perhaps.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
How are you calling it? What is it returning? What values are you using for hToken and nFolder ?
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
I tried like this :
HRESULT hRes = SHGetSpecialFolderLocation( NULL, CSIDL_PROFILE, &pidl );
if (SUCCEEDED(hRes))
{
SHGetPathFromIDList(pidl, lpPath );
}
|
|
|
|
|
What is it returning? Shouldn't you be using CSIDL_APPDATA instead (if you are wanting the Application Data folder)? As has already been suggested, use SHGetFolderLocation(NULL, CSIDL_APPDATA, -1, 0, &pidl) instead.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
I'm confused with suggestions given
Please can you give just one solution which works
|
|
|
|
|
Ok, it is solved doing as DavidCrow say :
HRESULT hRes = SHGetFolderLocation(NULL, CSIDL_LOCAL_APPDATA, HANDLE(-1), 0, &pidl);
Thank you
|
|
|
|