Aus Datei Editfelder füllen
-
Hallo und ein schönen Tag,
ich hab da mal ne frage.
Bin schon seit Tagen am suchen, aber finde nix was mir so Richtig helfen kann LAlso sagen wir mal ich habe 3 Editfelder und diese Speicher ich in eine Datei.
Das ist kein Problem, aber wie bekomm ich es hin, das ich das auch umgekehrt machen kann?Also aus der Datei, die 3 Editfelder wieder füllen kann?
BIGTHX
-
wie speicherst du den die Daten ab?
-
Na eben umgekehrt machen!??
Um das genau zu beantworten muss man allerdings wissen, wie du diese speicherst.
-
das passiert so,
TStringList *list = new TStringList(); list->Add(Edit1->Text +" "+Edit2->Text+" "+ Edit3->Text); list->SaveToFile("c:\\test.txt"); delete list;
-
mit SaveToFile() speicherst du die Daten in die Datei.
wie wird dan wohl die Funktion heissen die die Daten einliesst?
sonst würde ich dir die BCB-Hilfe enpfehlen
-
ja würde ich so gesehen sagen LoadFromFile
??könntet ihr mir mit nem kleinem Ansatzcode Beispiel aushelfen bitte, dann ist’s einfacher mit dem verstehen, den die Hilfe teilweise umzusetzen ist net immer einfach für ein Anfänger

-
Unabhängig von Funktionsnamen für das Einlesen...
ist die Art der Speicherung wenig sinnvoll. Drei Werte werden hintereinander gehangen um sie dan in eine Datei zu speichern. StringList hat die Möglichkeit die Werte mit einem Zeilenumbruch getrennt zu speichern. Dann bekommt man die Werte auch beim Einlesen einzeln wieder zurück. So musst du hier einen Strin lesen und diesen dann manuell am Leerzeichen aufteilen. Ungünstiges vorgehen
TStringList *list = new TStringList();
list->Add(Edit1->Text);
list->Add(Edit2->Text);
list->Add(Edit3->Text);
list->SaveToFile("c:\\test.txt");
delete list;einlesen:
TStringList *list = new TStringList();
list->.............("c:\\test.txt");Edit1->Text=list->Strings[0];
Edit2->Text=list->Strings[1];
Edit3->Text=list->Strings[2];
delete list;
-
hawkdz schrieb:
ja würde ich so gesehen sagen LoadFromFile
??na dan würde ich mal inder Hilfe nachschauen ob TStringList eine Funktion LoadFromFile hat (TStringList im BCB markieren und F1 drücken)
ich würde deine Speicherunktion etwas ändern:
list->Add(Edit1->Text +" "+Edit2->Text+" "+ Edit3->Text);würde ich abändern in:
list->Add(Edit1->Text); list->Add(Edit2->Text); list->Add(Edit3->Text);so hast du den Text jedes Edits in einer eigenen Zeile, in der Datei.
so weisst du nachher beim Laden auch, welcher Text in welches edit rein muss
-
wie sich so alles überscheidet

-
-
super es geht!!

ich habe mir schon sorgen gemacht, bei speichern der Datei wenn ich das ohne Leerzeichen mache, daß er das als ganzes sieht.
speichern:
TStringList *list = new TStringList(); list->Add(Edit1->Text); list->Add(Edit2->Text); list->Add(Edit3->Text); list->SaveToFile("c:\\test.txt"); delete list;laden:
TStringList *list = new TStringList(); list->LoadFromFile("c:\\test.txt"); //:) Edit4->Text=list->Strings[0]; Edit5->Text=list->Strings[1]; Edit6->Text=list->Strings[2]; delete list;BIG THX an euch und wünsche noch ein schönen Tag!
-
Hallo
allerdings solltest du beim Laden sicherstellen, das in der StringListe dann auch wirklich mindestens 3 zeilen sind, sonst gibt es eine Zugriffsverletzung.
bis bald
akari
-
sorry für das generve!
aber habe jetzt ein kleines Problem

ich hab das Speichern mal mit einer ComboBox1->ItemIndex ausprobiert das klappt.
aber wen ich das jetzt so schreibe,
TStringList *list = new TStringList(); list->LoadFromFile("c:\\test.txt"); Form2->ComboBox1->ItemIndex=list->Strings[0]; delete list;bringt er den typischen fehler
[C++ Fehler] Unit2.cpp(2830): E2034 Konvertierung von 'AnsiString' nach 'int' nicht möglichhab mir am anfang nicht gedacht das ich das benutzen kann, da es aber jetzt mit dem speicher des ItemIndex geht, muss ich es nicht erst umsetzen in ein Editfeld

nur wie kann ich den Int werte in nen string umwandeln, gibts da ne möglichkeit alle die im Button1 vorhandenen Int Variabeln in String umzuwandeln?
THX
-
siehe in der Hilfe zu
IntToStr
StrToInt
AnsiString::ToInt
-
Hallo
dein Ansatz ist schon richtig, wie du AnsiString nach umwandelst steht in der BCB-FAQ hier im Forum.
/Edit : Braunstein , wir scheinen beide wohl immer die Antworten uns gegenseitig wegnehmen wollen

bis bald
akari
-
jaja schon gut,
ich hau mir ja schon auf den hinterkopf

TStringList *list = new TStringList(); list->LoadFromFile("c:\\test.txt"); ComboBox1->ItemIndex= StrToInt(list->Strings[0]);aber ich hab na ne menge ComboBoxen und Checkboxen mit State

CheckBox1->State=StrToInt(list->Strings[1]);ah zu früh gefreut

das mit der CheckBox geht doch nicht er bringt mir ein fehler nicht im compiler sondern erst wen ich den button laden drücke irgendwas im debuger aber frag mich mal wie ich das verstehen soll !?!? HILFE
-
hawkdz schrieb:
aber frag mich mal wie ich das verstehen soll !?!? HILFE

Indem Du erst einmal die C++-Grundlagen lernst?
-
ja hast du vollkommen recht @ joe_m.
aber diese Festestellung hilft auch nicht wirklich weiter

aber danke das du mich so freundlich dran erinnerst!naja zum problem ich glaube ich muss ein memofeld auch mit den eizelnen strings aus und eingeben bzw laden.
kann es sein da er in den zeilen durcheinander kommmt den mit einem einzelnen CheckBox->State kommt er klar?
danke für die lernhilfe an alle

-
Hallo
oder indem du die betreffende Fehlermeldung hier mal postest?
Ich vermute mal das in der ersten zeile der Datei eben keine reine Ganzzahl steht.
/Edit : Außerdem weiß ich nicht wie du plötzlihc von ComboBox auf CheckBox kommst, und warum du CheckBox->State nimmst und nicht CheckBox->Checked
bis bald
akari
-
Ich hab mir das mal noch mal genauer angeschaut,
es sieht halt so aus, anhand dieses Beispiels:
speichern:TStringList *list = new TStringList(); list->Add(Memo1->Text); list->Add(CheckBox1->State); delete list;laden:
TStringList *list = new TStringList(); list->LoadFromFile("c:\\test.txt"); Memo1->Text=list->Strings[46]; CheckBox1->State=StrToInt(list->Strings[3]);wenn im Memofeld, 2 Zeilen stehen, kann es glaub ich ja so nicht gehen.
wie akari schon ein paar antworten vorher gesagt hat, daß die Zeilen in der Datei übereinstimmen müssen.also denke ich mal das ich das Memofeld auch einzeln in die Datei speichern muss?! Die eizelnen Strings mein ich
ich habe das Memofeld auf 5lines beschränkt und wenn ich jetzt alle 5 in die Datei schreibe und auch immer alle 5 auslesen lasse, das es egal sein wird ob sie alle befüllt worden sind oder nicht?!