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 L

    Also 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 🙂



  • Christian211 schrieb:

    wie sich so alles überscheidet 🙂

    Code-Tags :p



  • 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öglich
    

    hab 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?!


Anmelden zum Antworten