INI Dateien, Strukturen und memcpy
-
Hi leutz,
Ich schreibe ein Programm, das soll eine INI Datei einlesen, und das was gelesen wurde, in ein Member einer Struktur packen.
Ich Programmiere mit dem c++ Builder, das selbe Problem tritt allerdings auch bei der Dev-C++ IDE auf.
ich lasse erstmal einfach mal den Code Sprechen
:
[code]
int err;
char text[] = "a";
struct INI_CONFIG{
char key_STD_SMTP[9];
char sekt_CONFIG[7];
char default_Val[2];
};struct CONFIG{
char smtp_serv[255];
char strt_dir[15];
};int main()
{struct CONFIG STARTUP, *cfg_ptr;
struct INI_CONFIG INI_CONF, *ini_ptr;memcpy(INI_CONF.key_STD_SMTP, "STD_SMTP",9);
memcpy(INI_CONF.sekt_CONFIG, "CONFIG",7);
memcpy(INI_CONF.default_Val, "A",2);
memcpy(STARTUP.strt_dir, "D:\\eclient.ini",15);
//wenn ich nur einen Slash mache, ist der nacher ganz weg. Ist diese Lösung //Korrekt ?//ich muß doch immer ein Byte mehr als den String als letztes Argument bei
//memcpy angeben, oder ?
//Bitte schaut euch das nochmal in verbindung mit den Struktur prototypen an,
//ob ich bei denen die richtigen Stringgrößen Angegeben habe.
//zuerst hatte ich die Prototypen einz kleiner gemacht, als Das was memcpy an //Bytes kopiert, schließlich ist a[0] doch auch schon ein feld - und dann müßte
//doch in a[0] genau ein Byte einpassen !!!
//eigentlich sind die protoypen so falsch, weil sie immer ein byte zuviel //haben. (ich bedenke den String Terminator)cfg_ptr = &STARTUP;
ini_ptr = &INI_CONF;
MessageBoxA(0, INI_CONF.sekt_CONFIG, "Startup Succes",0);
MessageBoxA(0, INI_CONF.key_STD_SMTP, "Startup Succes",0);
MessageBoxA(0, INI_CONF.default_Val, "Startup Succes",0);
MessageBoxA(0, STARTUP.strt_dir, "Startup Succes",0);err=GetPrivateProfileString(ini_ptr->sekt_CONFIG, ini_ptr->key_STD_SMTP,
ini_ptr->default_Val,cfg_ptr->smtp_serv,255,cfg_ptr->strt_dir);
itoa(err, &text, 10);
if (err < 3){
MessageBoxA(0, text, "Startup Error", 0);
}else{
MessageBoxA(0, STARTUP.smtp_serv, "Startup Succes",0);
};
return 0;
}
[code]Eigentlich sollte smtp_serv dann den inhalt eines smtp.server.de haben, aber so wie es aussieht, wird die INI Datei entweder nicht geöffnet, oder die Sektion wird nicht gefunden - weiß jemand einen Rat ?
(in die Struktur wird der Default wert gesetzt - den will ich aber ja nicht)
Nedda Gruß,
Ole