Speichern



  • Hallo,

    ich habe hier bei mir ein kleines Problem.
    Also ich habe hier ein Programm das mit einem struct läuft.
    Das Programm ansich läuft.
    Aber ich wollte jetzt alles was in meinem Struct steht in ein File auf die Festplatte schreiben und dies dann auch wieder einlesen könne.
    Jedoch schaffe ich dies nicht.
    Kann mir da einer helfen?

    Danke

    Mfg
    Harry



  • Hallo

    Schau in die FAQ hier im Builder-Forum, und benutzt die Suchfunktion hier im Forum nach dem Stichwort *TStringList*.

    bis bald
    akari



  • Also ich hab jetzt das hier gefunden.

    TStringList *list = new TStringList(); 
    list->Add(MeinString); 
    list->SaveToFile("c:\\test.txt"); 
    delete list;
    

    Mein struct nennt sich Fahrzeug

    Also schaut das bei mir so aus

    TStringList *list = new TStringList(); 
    list->Add(Fahrzeug); 
    list->SaveToFile("c:\\sage.dat"); 
    delete list;
    

    Jetzt sagt er immer das er das Fahrzeugstruct nicht in Ansistring umwandeln kann.
    Wo liegt mein Fehler.
    Sry für die doofen fragen.
    Bin absolut neu in der Szene muss aber das Programm bis Montag fertig haben.

    Mfg



  • Hallo

    Du must schon die einzelnen Membervariablen von deinem struct jeweils einzelnen in die String-Liste eintragen.

    bis bald
    akari



  • OK in dem struct steht folgendes

    AnsiString Marke;
    AnsiString Treibstoff;
    int KM;
    int Tueren;
    int Baujahr;
    

    Wenn ich das jetzt so schreibe

    TStringList *list = new TStringList(); 
    list->Add(Marke); 
    list->SaveToFile("c:\\test.txt"); 
    delete list
    

    Dann meldet er immer undefined symbol 'Marke' 😕



  • Hallo

    Fahrzeug MeinTrabi;
    TStringList *list = new TStringList();
    list->Add(MeinTrabi.Marke);
    list->Add(MeinTrabi.Treibstoff);
    list->Add(IntToStr(MeinTrabi.KM));
    list->Add(IntToStr(MeinTrabi.Tueren));
    list->Add(IntToStr(MeinTrabi.Baujahr));
    list->SaveToFile("c:\\test.txt");
    delete list
    

    Aus Gründen der Datenkapselung sollte man diesen Ablauf in einer Methode der Fahrzeug-Klasse auslagern. Sähe dann zum Beispiel so aus

    class Fahrzeug
    {
      ...
      AddToList(TStrings* List);
    };
    
    Fahrzeug::AddToList(TStrings* List)
    {
      List->Add(Marke);
      List->Add(Treibstoff);
      List->Add(IntToStr(KM));
      List->Add(IntToStr(Tueren));
      List->Add(IntToStr(Baujahr));
    }
    
    Fahrzeug MeinTrabi;
    Fahrzeug MeinFerrari;
    TStringList *list = new TStringList();
    MeinTrabi.AddToList(list);
    MeinFerrari.AddToList(list);
    list->SaveToFile("c:\\test.txt");
    delete list
    

    bis bald
    akari



  • Danke erstmal aber so ganz will das noch nicht.

    Also bei mir schaut der struct so aus.
    Also 100 Fahrzeuge mit jeweils den Daten.
    Die struct Nummer heißt dann bei mir iZ
    Wie muss ich das dann schreiben?

    typedef struct
    {
    AnsiString  Marke;
    Ansistring  Treibstoff;
    int  KM;
    int  Tueren;
    int  Baujahr;
    }
    Fahrzeugstruct;
    Fahrzeugstruct Fahrzeug [100];
    


  • Hallo

    Schleifen wirst du doch hoffentlich noch kennen? Basierend auf dem zweiten Code aus meinem letzten Post :

    struct Fahrzeugstruct // typedef ist hier unnötig und veraltet
    {
    AnsiString  Marke;
    Ansistring  Treibstoff;
    int  KM;
    int  Tueren;
    int  Baujahr;
    ...
    };
    
    Fahrzeugstruct Fahrzeug [100];
    
    // ...
    for (int i = 0; i < 100; i++)
      Fahrzeug[i].AddToList(list);
    

    bis bald
    akari



  • Also nochmal für ganz blöde wie mich.

    Ich hab jetzt das hier Global deklariert.

    struct Fahrzeugstruct
    {
    AnsiString  Marke;
    Ansistring  Treibstoff;
    int  KM;
    int  Tueren;
    int  Baujahr;
    ...
    };
    
    Fahrzeugstruct Fahrzeug [100];
    

    soweit richtig?

    Danach hab ich dies hier unter dem "Speichern" Button gemacht.

    class Fahrzeug
    {
      ...
      AddToList(TStrings* List);
    };
    
    Fahrzeug::AddToList(TStrings* List)
    {
      List->Add(Marke);
      List->Add(Treibstoff);
      List->Add(IntToStr(KM));
      List->Add(IntToStr(Tueren));
      List->Add(IntToStr(Baujahr));
    }
    
    Fahrzeug MeinTrabi;
    Fahrzeug MeinFerrari;
    TStringList *list = new TStringList();
    MeinTrabi.AddToList(list);
    MeinFerrari.AddToList(list);
    list->SaveToFile("c:\\test.txt");
    delete list
    
    for (int i = 0; i < 100; i++)
    {
      Fahrzeug[i].AddToList(list);
    }
    

    der meldet immer das er list und Marke und die anderen Sachen nicht kennt.
    Was mach ich nur falsch? 😡 😕

    Tut mir leid für die blöde fragerei.



  • Hallo

    Ich empfehle dir dringend erstmal ein C++ Grundlagen-Tutorial durchzuarbeiten und die Sprache C++ in Konsolenprogrammen zu lernen. Denn du sollst meine Codestücke nicht einfach kopieren und irgendwie aneinanderfügen sondern nachdenken und anpassen!

    bis bald
    akari


Anmelden zum Antworten