Problem mit GetPrivateProfileString
-
Hallo
mir kommt verdächtig vor, das du zuerst aus
LabeledEdit4->Textden Namen der Datei liest und dann denn Wert reinschreibst.
Kann es sein, das dann einfach der Name der Datei fehlt?bis bald
akari
-
Also wenn du das LabledEdit ganz oben meinst das kann nicht ganz richtig sein. Ich weiss aber auch nicht was da hinkommt
.Ich habe das jetzt so gemacht:
TIniFile *ini; ini = new TIniFile( ChangeFileExt( LabeledEdit4->Text, "CloneBox.ini" ) ); ini->ReadString("PC Config", "Temp", LabeledEdit4->Text); LabeledEdit5->Text = ini->ReadString( "PC Config", "Image", ""); LabeledEdit1->Text = ini->ReadString( "XBOX Config", "IP", ""); LabeledEdit2->Text = ini->ReadString( "XBOX Config", "Benutzername", ""); LabeledEdit3->Text = ini->ReadString( "XBOX Config", "Passwort", ""); delete ini;Das funktioniert auch wunderbar nur das "Temp" nicht mehr geladen wird.
-
Hallo
Ja WO soll denn der Temp-Wert auch hingeladen werden?
??? = ini->ReadString("PC Config", "Temp", LabeledEdit4->Text);/Edit : Gib deinen Controls lieber mal eindeutige und sinnvolle Namen
bis bald
akari
-
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->Textsetze 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 gleichini = 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!
