Datei erzeugen



  • Hallo zusammen,

    ich hab folgendes Problem:
    Mein C++ Programm ermittelt wärend der Laufzeit verschiedene Daten, die vom Anwender eingegeben bzw. auch vom Programm selbst ermittelt werden. Dabei handelt es sich um double's, string's und int's.
    All diese Daten werden am Ende in einer Form (eine MDI Child Komponente) dargestellt. Diese enthält Diagramme und Textfelder.
    Die Daten sind alle in einer Instanz, einer von mir selbst entwickelnden Klasse, zusammengefasst!

    Ich muss all diese Daten jetzt in einer Datei speichern, damit ich bei Bedarf die Daten (die erzeugte MDI Child Komp.) erneut anzeigen kann.

    Ich weiß leider überhaupt nicht wie ich das ansetzen kann!! 😕
    Gibt es nicht eine Möglichkeit die MDI Komponenten selbst zu speichern??
    oder kann ich die Instanz der Klasse speichern??

    Hab bisher nur Lösungen gefunden bei dennen ich Text in eine Datei speichern kann.
    und frag mich/euch ob es da nicht auch andere Möglichkeiten gibt??!!
    Wie ihr seht hab ich vom Datein speichern nicht allzuviel Ahnung!

    Vielleicht könnt ihr mir mit einer Konzeptidee oder sogar mehr helfen ???!!!

    Vielen Dank!
    mfg hans



  • // Datei öffnen
    FILE* pfile = NULL;
    
    if((pfile= fopen("datei.dat","wb")==NULL)
      return -1;
    
    // String schreiben
    char* str;
    // STring Init
    ...
    
    int len = strlen (str);
    fwrite(&len,sizeof(int),1,pfile);
    fwrite(str,1,strlen(str),pfile);
    
    // Zahl schreiben
    double d = 4.678;
    fwrite(&d,sizeof(double),1,pfile);
    
    // schließen
    fclose(pfile);
    


  • Hallo

    Nein du kannst nicht so ein Form-Instanz samt Daten automatisch speichern, das must du schon selber machen.
    Und zwar verwendest du eine TStringList und trägst dort alles ein. Du wandels alle nicht-Strings in String um (IntToStr), und denkst dir ein Format aus (CSV?)
    Beim laden liest du analog wieder aus und wandelst die Werte wieder um und trägst sie in eine leere MDI-Form wieder ein.

    bis bald
    akari



  • Ok! Ich hab jetzt die StringList erzeugt.
    Alleridngs kann ich mit den Informationen, die ich hab nicht abspeichern.
    Kann mir jemand vielleicht mal den Quellcode geben.
    Ich hab jetzt auf das "OnClick"-Eregnis im Main Menue eine dynamische StringList erzeugt weiß aber nicht wie ich die jetzt in eine Datei kriege und was dabei noch zu beachten ist??
    Außerdem ist mir noch nicht klar wie ich bei "openfile" aus der Datei wieder eine StringList krieg und mit welchem Befehl ich die List wieder in einzelnen Strings zerteile??

    Sorry aber ich check das wirklich nicht!!

    Vielen Dank!
    mfg hans



  • Hallo

    vergiß den Code von ESS_CB, das ist veraltetes C, mit dem Builder hast du viel bessere Möglichkeiten.
    Einen kurzen Beispielcode findest du in der BCB-FAQ gleich in der TOP 3.

    bis bald
    akari



  • Danke, das mit dem speichern und öffnen klappt!
    allerdings muss ich immernoch die StringList wieder zerteilen!!!

    Muss ich nach einem Trennzeichen suchen wenn ja welchem??
    oder gibt es den "umgekehrten" Befehl zu Add??

    Vielen Dank!!
    mfg hans



  • Hallo

    die StringList hat als eingebautes Trennzeichen den Zeilenumbruch.
    Hast du also beim Speichern als primäres Trennzeichen den Zeilenumbruch gewählt, dann brauchst du nur mit den Eigenschaften Count für Zeilenanzahl und Strings für das Array der Zeilen zu arbeiten.

    All das findest du aber auch in der BCB-Hilfe zu TStringList, also erst lesen, ausprobieren dann (wenn noch unklar) nachfragen.

    bis bald
    akari



  • akari schrieb:

    vergiß den Code von ESS_CB, das ist veraltetes C.

    *HUST* *HUST* mit dem Builder kenn ich mich nicht aus, aber im VS ist e die beste und bequemste Art sowas zu machen!! 😡 😡 😡 😡 😡



  • ESS_CB schrieb:

    akari schrieb:

    vergiß den Code von ESS_CB, das ist veraltetes C.

    *HUST* *HUST* mit dem Builder kenn ich mich nicht aus, aber im VS ist e die beste und bequemste Art sowas zu machen!! 😡 😡 😡 😡 😡

    Dann solltest du dir mal in der C++ FAQ den Thread Dateien und Ströme anschauen. Du wirst staunen wie echtes C++ (also auch ohne VCL und WinAPI) aussieht.

    bis bald
    akari



  • schön und gut, ich nehm trotzdem lieber File, find ich besser.


Log in to reply