*.ini ende bestimmen
-
Hallo,
ich habe ein file "test.ini" welches wie folgt aufgebaut ist:
[info]
thema=gemüse
[eintrag1]
frage=käse
antwort=gelb
[eintrag2]
frage=gurke
antwort=grün
[eintrag3]
...usw.hat jmd ne idee, wie man herausfinden kann, wie viele "sektionen" in der datei sind? bzw. wie man herausfinden kann wie der letzte eintrag heißt?
Ich benötige sie um neue einträge, nach dem letzten eintrag anzulegen.WritePrivateProfileString(eintrag,"Antwort",antwortText,str);
MfG Lukas
-
If lpAppName is NULL, GetPrivateProfileString copies all section names in the specified file to the supplied buffer.
-
hm ja das hab ich auch schon gelesen ... aber i-wie klappt das bei mir nicht
char puffer[1000]; GetPrivateProfileString(NULL,NULL,NULL,buffer,sizeof(buffer),str); MessageBox( NULL, buffer ,"werte in puffer", MB_OK);
in puffer wird nur "eintrag" gespeichert ... eintrag1,2,3,usw aber nicht
MfG Lukas
-
Der String den du zurückbekommst sieht so aus:
eintrag1\0eintrag2\0\eintrag3\0\0
Beim ersten \0-Zeichen hört MessageBox auf den String auszugeben. (wie alle Stringfunktionen die keine Länge übergeben bekommen)
Du müsstest dir also eine Schleife programmieren...
-
irgendwie bekommichs net hin ...
habs mit:
p1 = buffer;
p2 = strchr (p1, '\0');
versucht ... aber es klappt i-wie nicht ... könntest du mir bitte ein beispiel zeigen?
MfG Lukas
-
TCHAR* pBuffer = buffer; int length; while((length = lstrlen(pBuffer)) != 0) { MessageBox(NULL, pBuffer, NULL, MB_OK); pBuffer += length + 1; }
-
vielleicht kann
seekg/seekp
helfen.
Am Ende anfangen und anschauen, ob ein "]" vorhanden ist. Ansonsten weiter verschieben.
Dann hast du den letzten Eintrag.
-
ok gelöst
danke