• Welcome to Valhalla Legends Archive.
 

GetPrivateProfileString() Help?

Started by Spilled, July 09, 2006, 12:19 AM

Previous topic - Next topic

Spilled

Im running into trouble with using this API and i cant find the problem. The API keeps returning the default value that i set to "default"

heres the function

char* getStuff(char* appname, char* key)
{
      char* answer = new char[120];
      GetPrivateProfileString("Settings","User","Default",answer,120,"Config.ini");
     
      return answer;                             
}


Heres the INI i read from:
[Settings]
User=Spilled
Pass=
Server=uswest.battle.net
CDKey=
Home=Op )(
Client=PXES
Trigger=$

When i call getStuff it just returns "Default" Any ideas or alternative ways u suggest? Thanks guys
(Config.INI is in the same folder as the exe)

UserLoser

Have to supply a path to config.ini.  Try ".\\config.ini" instead.  GetStuff? lol

Spilled

lol u like that? haha but yea UL that works thanks alot :-D

Kp

Setting aside that GetPrivateProfileString is deprecated, that's horrible code!  It's not const-correct, it uses magic numbers for size allocation, and it relies on the caller to free the memory.  Consider doing this:


void getStuff(vector<char>& result, const char *appname, const char *key)
{
result.resize(120);
GetPrivateProfileString("Settings", "User", "Default", &result[0], result.size(), ".\\config.ini");
}


It's still horribly ugly and could use a lot of improvement, but at least this one will not leak memory.  It's also a bit more resistant to memory corruption since I removed one occurence of the magic number (120).
[19:20:23] (BotNet) <[vL]Kp> Any idiot can make a bot with CSB, and many do!

Spilled

Quote from: Kp on July 09, 2006, 11:28 AM
Setting aside that GetPrivateProfileString is deprecated, that's horrible code!  It's not const-correct, it uses magic numbers for size allocation, and it relies on the caller to free the memory.  Consider doing this:


void getStuff(vector<char>& result, const char *appname, const char *key)
{
result.resize(120);
GetPrivateProfileString("Settings", "User", "Default", &result[0], result.size(), ".\\config.ini");
}


It's still horribly ugly and could use a lot of improvement, but at least this one will not leak memory.  It's also a bit more resistant to memory corruption since I removed one occurence of the magic number (120).


Thanks kp