Problem mit GetPrivateProfileString



  • Vielen Dank! Jetzt Funktionierts endlich so wie ich es wollte 😃 .

    TIniFile *ini;
       ini = new TIniFile( ChangeFileExt( LabeledEdit4->Text, "CloneBox.ini" ) );
       LabeledEdit4->Text = ini->ReadString("PC Config", "Temp", LabeledEdit4->Text);
       LabeledEdit5->Text = ini->ReadString( "PC Config", "Image", LabeledEdit5->Text);
       LabeledEdit1->Text = ini->ReadString( "XBOX Config", "IP", LabeledEdit1->Text);
       LabeledEdit2->Text = ini->ReadString( "XBOX Config", "Benutzername", LabeledEdit2->Text);
       LabeledEdit3->Text = ini->ReadString( "XBOX Config", "Passwort", LabeledEdit3->Text);
       delete ini;
    

    Es geht zwar wenn vor

    "CloneBox.ini"
    

    das

    LabledEdit4->Text
    

    setze aber richtig ist es wohl nicht 😕 . Und wie kriege ich es jetzt hin dass das ganze noch beim Programmstart geladen wird?



  • Hallo

    Was steht denn in LabeledEdit4->Text drin? Da sollte ein Dateiname sein, eventuell mit Pfad. Und ChangeFilxExt erwartet als zweiten Parameter auch eigentlich eine reine Extension, keinen Dateinamen.

    Für den Programmstart : Entweder in den Konstruktor kopieren oder in den Event OnShow

    bis bald
    akari



  • Da sollte ein Dateiname sein, eventuell mit Pfad

    Und von welcher Datei? Der exe?



  • Hallo

    natürlich der Dateiname der Ini-Datei, die du laden willst !
    Wenn die Datei im selben Pfad wie das ausgeführte Programm steht, reicht "CloneBox.ini". Ansonsten eben noch den Pfad davor hängen.
    Und wenn du einmal den festen kompletten Dateinamen hast, kannst du den auch ohne ChangeFileExt an TIniFile übergeben.

    so langsam frage ich, was und vor allem wie du programmierst.

    bis bald
    akari



  • Also die ini liegt im Windows Verzeichniss. Ich will da jetzt aber nicht C:\Windows eintragen. Selbst wenn man das verzeichniss nicht andres nennt ist es z.B. bei Win2000 C:\Windows NT und dann würde das nicht mehr laufen. Kann ich das nicht irgendwie einestellen das der automatisch das Windowsverzeichniss findet?

    so langsam frage ich, was und vor allem wie du programmierst.

    Bin halt noch totaler Anfänger 😃 .



  • akari schrieb:

    Wenn die Datei im selben Pfad wie das ausgeführte Programm steht, reicht "CloneBox.ini".

    Um eventuellen Missverständnissen vorzubeugen: Standardmässig werden Ini-Dateien in %WINDOWS% erzeugt bzw. gesucht, wenn man sie im Programmverzeichnis (oder sonstwo) anlegen bzw. auslesen will dann muss explizit der Pfadname angeben werden.

    Nachtrag:

    ZeroOne schrieb:

    Kann ich das nicht irgendwie einestellen das der automatisch das Windowsverzeichniss findet?

    Das macht "der" automatisch, soweit nicht ausdrücklich anders festgelegt. S.o.



  • Also soweit ich das jetzt verstanden habe müsste das so aussehen:

    ini = new TIniFile( ChangeFileExt( CloneBox.ini, ".INI" ) );
    

    Was nur leider nicht funktioniert.



  • "Funktioniert nicht" ist keine ausreichende Problembeschreibung.
    Und, so leid es mir tut, du hast offensichtlich nichts verstanden. 😉

    Schreib deinen Code mal in einzelne Zeilen, anstatt alles gleich in den TIniFile-Konstruktor zu packen, und lass dir jeweils das Ergebnis anzeigen.



  • Hallo

    Außerdem :

    ChangeFileExt( CloneBox.ini, ".INI" )
    

    ist Unsinn.
    warum nicht gleich

    ini = new TIniFile("CloneBox.ini");
    

    bis bald
    akari



  • Ja, so funktioniert es. Jetzt läuft endlich alles Fehlerfrei. Vielen Dank nochmal!



  • Wirklich verstanden hast du aber nicht, was vorher falsch war, oder? 😉

    Im übrigens halte ich es für keine gute Idee, die Ini-Dateien in's Windows-Verzeichnis zu stellen. In Betriebssystemverzeichnissen haben nur Betriebssystemdateien etwas verloren. Dateien von Anwendungsprogrammen gehören in das jeweilige Anwendungsverzeichnis oder, bei Dateien mit Benutzerspezifischen Daten, in's jeweilige Heimatverzeichnis des Benutzers.

    Mit ChangeFileExt etc. solltest du dich also unbeding nochmal beschäftigen.



  • Hallo

    ich denke, die beste Lösung ist immer noch mit TRegistry direkt in die Registry schreiben.

    bis bald
    akari



  • Registry zumüllen, das ist ja noch schlimmer! 😉


Anmelden zum Antworten