Datenstruktur speichern und laden

  • Ich spiel mich grad mit Speichern und Laden von Datenstrukturen in VC++ 2005. Dazu soll eine Liste des Typs "TFPoint" (eigene Klasse) gespeichert und geladen werden können. Aber egal wie lang diese Liste ist, die Datei wird zwar geschrieben, ist aber immer nur 24Byte groß. :( Dementsprechend funzt das Laden dann natürlich auch nicht.

    (Der Code ist von einem Tutorial abgewandelt)

  • 24Byte


    Mit deinem write schreibst du nur die tatsächlich in deiner Struktur enthaltenen Bytes, das sind im Wesentlichen eine Handvoll Pointer auf irgendwelche anderen Strukturen, wo der logische Inhalt der Struktur steht. Automagisch serialisiert wird da nix. Insbesondere nicht, wenn du den Typ deiner Struktur wegcastest, damit man ja keine Serialisierungsmethode aufrufen könnte, selbst wenn es eine gäbe...

    Ich tät über die Liste iterieren und die Elemente einzeln ausgeben. Man kann hierfür den << -Operator entsprechend überladen, wenn man das geil findet. Man muß aber trotzdem die Elemente einzeln anfassen.

    *plantsch*

  • Was genau erwartest du dir von: (char *)(&fs) ? Woher soll der Compiler wissen, was er auf einen char C-Cast für eine "unbekannte" Struktur liefern soll! (Info: ostream& write ( const char* s , streamsize n ); )

    Vielleicht solltest du dir mal Serialisierung ansehen und überlegen wie die Daten in deiner Datei landen sollen.

    mfG Fup

  • So, hab das jetzt mal total basic versucht, und es geht trotzdem nicht, obwohls zu 100% aus einem Tutorial genommen wurde:

    Die Datei wird richtig gespeichert, der Integer steht drinnen. Aber beim Laden wird -85899blabla ausgelesen :confused:

    Einmal editiert, zuletzt von Stephe (26. November 2008 um 11:09)

  • :hewa::shout:

    Ich Dumpfgummi hab der Methode die Dateiendung schon übergeben und habs nochmal hinzugefügt. Jetzt gehts. Habs mit der binären Methode gemacht, die ich auch schon vorher probiert hab.
    Trotzdem danke!

  • magst du deine daten nicht einfach in ein binary-file schreiben?


    Also grad von dir hätt ichin grad diesem Thread so einen Rat nicht erwartet :) Binäre Files sind weniger portabel, nehmen möglicherweise nur unwesentlich weniger Platz ein (falls überhaupt), und, wie der Anfang des Threads zeigt, ist das naive Dumpen von Bytes oft nicht das, was man sich als tatsächliche Operation wünscht.

    *plantsch*

  • Binäre Files sind weniger portabel, nehmen möglicherweise nur unwesentlich weniger Platz ein (falls überhaupt), und, wie der Anfang des Threads zeigt, ist das naive Dumpen von Bytes oft nicht das, was man sich als tatsächliche Operation wünscht.

    Ja! Am besten gleich XML rausschreiben (mit libxml2 zB)!

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • Also grad von dir hätt ichin grad diesem Thread so einen Rat nicht erwartet :)

    hmm, verdammt, wie argumentier ich mich da jetzt raus? ;) so lange das format gut spezifiziert und bekannt ist, wovon ich natuerlich ausgegangen bin, ist ja nicht viel verloren, dann kann man die daten ja auch mit FOSS wieder raus holen.

    aber ja, was den rest betrifft, habt ihr natuerlich vollkommen recht. fuer ernstzunehmende programme gibt es bei weitem sinnvollere moeglichkeiten.

    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!