Editfelder auslesen und in Datei speichern

tolga

Grünschnabel
Hallo zusammen,


ich habe vor, die Einstellungsdaten bei Beendigung eines Programmes, aus den Editfeldern zu lesen und in eine Datei zu speicher. Das klappt soweit.

Jetzt möchte ich bei Start des Programmes die Daten aus der Datei auslesen und in die Editfelder übergeben. --> Ziel ist es, dass der Benutzer nicht immer wieder bei Start des Programms seine Daten eingeben muss.

Bis Jetzt Quelltest:

FILE *FHandle;
String AktVerz=GetCurrentDir();
FHandle=fopen("..\\Daten.dat","wt");
if (FHandle)
{
fputs(Form2->Edit10->Text.c_str(),FHandle);
fputs("\n",FHandle);
fputs(Form2->Edit11->Text.c_str(),FHandle);
fputs("\n",FHandle);
fputs(Form2->Edit12->Text.c_str(),FHandle);
fputs("\n",FHandle);
fputs(Form2->Edit13->Text.c_str(),FHandle); // ""
fputs("\n",FHandle); // ""
fputs(Form2->Edit14->Text.c_str(),FHandle); // ""
fputs("\n",FHandle); // ""
}
fclose(FHandle); // Schließe das Handle
 

PixelShader

Erfahrenes Mitglied
Hi,
Gehört eigentlich in den "Borland" Unterforum, egal!
Ich rate dir, da du Strings abspeicherst, TStringList zu nehmen. Ist in diesem Fall VIEL pracktischer! Es ist eine Liste wo du Strings von deinen Editfeldern einfach reinschreiben kannst. Die Strings werden in einer Array dargestellt TStringList::Strings[];
Benutzung von dem Zeug:
Code:
TStringList *StrList; // definition einer solchen List
StrList = new TStringList(); // erstellung
// jetzt kann man das benutzen.

// um einen String hinzufügen:
StrList->Add(Form2->Edit1->Text);  // Edit1->Text wird in StrList->Strings[0] geschpeichert
StrList->Add(Form2->Edit5->Text);  // Edit5->Text wird in StrList->Strings[1] geschpeichert
// usw...

// die Array, z.B. um zurück in die Editfelder zu schreiben
Form2->Edit1->Text = StrList->Strings[0];
Form2->Edit5->Text = StrList->Strings[1];
//usw...

// Alle Strings im TStringList können dikert in eine Datei gespeichert werden!:
StrList->SaveToFile( /*Dateiname*/ );  // fur das aktuelle verzeichniss keine Pfadeingabe

// und gelesen!
StrList->LoadFromFile( /*Dateiname*/ );

// Um alle Elemente von der Liste zu löschen:
StrList->Clear(); // wirs du aber glaub ich nicht brauchen
Viel Spass :)
 

tolga

Grünschnabel
Hallo nochmal,
das klappt wunderbar, nur wenn ich dann im nachhinein die Strings aus der Stringliste in die Editfelder übergeben möchte, entsteht eine Fehlermeldung, Zugriffverletzung, wenn ich die einzelnen Strings in einer Showmessage ausgebe, werden die Daten ausgegeben, die in der Stringliste vorhanden sind. Bitte nochmal kurze Hilfe. Das Schreiben der Stringliste
in eine Datei klappt wunderbar.

if (FileExists("Daten.dat"))
{
TStringList *Liste;
Liste = new TStringList();
Liste->LoadFromFile("Daten.dat");
ShowMessage(Liste->Strings[0]);

Form2->Edit10->Text = Liste->Strings[0]; --> Fehlermeldung
Form2->Edit11->Text = Liste->Strings[1];
Form2->Edit12->Text = Liste->Strings[2];
Form2->Edit13->Text = Liste->Strings[3];
Form2->Edit14->Text = Liste->Strings[4];
}
 

PixelShader

Erfahrenes Mitglied
wo versuchst du diesen Code auszuführen? Du hast nämlich Form2 noch garnicht erstellt, und deswegen kannst du nicht auf die Editfelder zugreifen.