INI File mit TStringList Aufzählung auslesen
-
Hallo,
ich hoffe jemand kann mir helfen, ich versuche aus einer INI Datei einen Bereich auszulesen in dem mehrere EMailAdressen aufgelistet sind. Leider klappt es noch nicht. Kann mir jemand helfen?
int iCount; // Struktur anlegen struct T_Settings{ AnsiString strPfad; TStringList *tListMailAddresse; }; T_Settings Settings; //INI File festlegen, welches ausgelesen werden soll TIniFile *Ini = new TIniFile("C:\\Backup\\test.ini"); // INI auslesen if(Ini != NULL) { Ini->UpdateFile(); //INI-Zeile auslesen, wobei common dem Bereich entspricht und EinPfad einer betimmten Zeile Settings.strPfad = Ini->ReadString("common", "EinPfad", "" ); //Neue StringListe anlegen Settings.tListMailAddresse = new TStringList; //Zeilen zählen Ini->ReadSectionValues("bla", Settings.tListMailAddresse); iCount = Settings.tListMailAddresse->Count; //Zeilenanzahl ausgenben zur Überprüfung AnsiString test = iCount; MessageBox(NULL, test.c_str() , "icont", MB_OK); //Jede Zeile auslesen for(int i = 0; i<iCount; i++) { //Settings.tListMailAddresse = Ini->ReadString("bla", "Mail0", ""); } //Pfad ausgeben zur Kontrolle, kann später wieder entfernt werden MessageBox(NULL, Settings.strPfad.c_str() , "INI", MB_OK); //Variablen leeren delete Ini; Ini = NULL; }
-
1. "Leider klappt es noch nicht" ist keine ausreichende Fehlerbeschreibung
2. Was willst du damit machen?
//Jede Zeile auslesen for(int i = 0; i<iCount; i++) { //Settings.tListMailAddresse = Ini->ReadString("bla", "Mail0", ""); }
-
Über diese Zeile bin ich mir eben unklar. In meinem INI File habe ich 3 EMail Adressen, die ich alle drei einer Variable zum weiteren Einsatz übergeben will. Leider bekomme ich immer wieder Fehlermeldungen.
Meine INI sieht folgendermaßen aus:
[common] EinPfad=U:\Eigene Dateien\WORDProbleme\Neu Microsoft Word-Dokument (2).doc Nochwas=1 [bla] Mail0="stern@test.de" Mail1="mond@test.de" Mail2="sonne@test.de"
-
Du hast doch ein Stringlist (tListMailAddresse) in die du die Einträge eingelesen hast. Du mußt sie da nur noch raus holen. Kleine Tipp: schau mal in die Hilfe zu TStringList::Strings
Noch was. Wenn du die StringList schon in eine struct packst. könntest du sie da auch gleich im Konstruktor erzeugen und im Destruktor wieder löschen.struct T_Settings { AnsiString strPfad; TStringList *tListMailAddresse; T_Settings() { tListMailAddresse = new TStringList; } ~T_Settings() { delete tListMailAddresse; } };Das finde ich irgendwie sauberer.
-
Hallo
Leider bekomme ich immer wieder Fehlermeldungen.
WAS für Fehlermeldungen?
Ich vermute einfach mal das soll so aussehen
Settings.tListMailAddresse->Add(Ini->ReadString("bla", "Mail0", ""));bis bald
akari
-
Das macht diese Zeile schon
Ini->ReadSectionValues("bla", Settings.tListMailAddresse);