Einzelnen Beitrag anzeigen

Benutzerbild von PAX
PAX

Registriert seit: 22. Jun 2003
Ort: Karlsruhe
88 Beiträge
 
Delphi 7 Personal
 
#1

ein struct mit fwrite in Datei schreiben

  Alt 8. Jan 2007, 10:49
Grüßt euch, Freunde!

Ich habe eine folgende Struktur:
Delphi-Quellcode:
struct EinstellungsDatei {      // Format für die Konfigurationsdatei
        int AVon, ABis, MFak, MPro, ZeitAuf, ZeitAbf, StatSitz, Addi, Subt, Mult, Div;
        bool ZeitBe, ZeitDan, ManBe1, ManBe2, ManBe3, ManBe4, ManBe5;
}
;
Und diese schreibe ich mit folgendem Quelltext in eine Datei:
Delphi-Quellcode:
                benutzerName = "Benutzer\\"+Form2->LabeledEdit1->Text+".cfg";
                struct EinstellungsDatei maske;
                FILE *datei2 = fopen(benutzerName.c_str(), "wb");
                //erstmal die GroupBox für die Zahlenbereiche (immer von links nach rechts, oben nach unten)
                        maske.AVon = Form3->Edit1->Text.ToInt();
                        maske.ABis = Form3->Edit2->Text.ToInt();
                ...

                fwrite(&maske, sizeof(maske), 1, datei2);
                fclose(datei2);
                FileSetAttr("Benutzer\\"+Form2->LabeledEdit1->Text+".cfg", faSysFile);
Das Problem ist, dass nachher beim Einlesen und setzen der Werte innerhalb der Komponenten, die ersten 5 Komponenten die korrekten (gespeicherten) Werte auch wieder tatsächlich bekommen und die restlichen Komponenten bekommen unsinnige zufällige Werte. Des Weiteren ist der Rückgabewerte der fopen() hierbei 0 - folglich trat ein Fehler auf.
Ich kann mir das nur nicht erklären, weil zum Zeitpunkt des Speicherns die Elementvariablen der Struktur richtige Werte besaßen und diese theoretisch auch geschrieben werden sollten.
Komisch finde ich hier auch, dass "datei2" offensichtlich ein Zeiger ist. Und müsste man für Zeiger nicht vorher Speicherplatz reservieren? Ich habe die obrige Lösung halt einfach so aus dem Programmierbeispiel aus der Hilfe entnommen.

Habt ihr einen Plan, was falsch läuft?

Danke, beste grüße und
viva los tioz!

PAX
Andreas
"Wenn man irgendwann mal von allen akzeptiert wird, dann weiß man, dass man irgendwas falsch gemacht hat." Zitat: Herr Weidner

  Mit Zitat antworten Zitat