Daystalker
Grünschnabel
Hi Leutz,
bei dem Versuch eine Struktur in eine Datei zu speichern (mittels fwrite()-Funktion) verwende ich für die Größenangabe die sizeof()-Funktion. Hierbei übergebe ich die Struktur - und erhalte leider einen größeren Wert als die Struktur Daten aufgenommen hat.
Dies ist dadurch zurückzuführen das bei Anlegen der Struktur mehr Speicherplatz benötigt wird als Daten aufgenommen werden - dadurch das die Daten an unterschiedliche Stellen im Arbeitsspeicher abgelegt werden.
Soweit das Problem! Sicherlich könnte ich jetzt "einfach" die einzelnen Größen "per Hand" zusammenzählen und damit arbeiten - das funktioniert.
Doch den Umstand jedesmal die Strukturgröße "per Hand" zu ermitteln ist nicht nur Zeitverschwendung sondern weist auch eine große Fehleranfälligkeit auf.
Wie kann ich das Problem lösen?
(Noch zwei Zusatzfragem: Wie kann ich mit AnsiStrings in der Struktur speichern/laden? Wie sollte ich den Speicher/Ladevorgang mit einem Stream bewerkstelligen (um die C-Funktionen zu vermeiden)?)
Vielen Dank im voraus...
Daystalker
bei dem Versuch eine Struktur in eine Datei zu speichern (mittels fwrite()-Funktion) verwende ich für die Größenangabe die sizeof()-Funktion. Hierbei übergebe ich die Struktur - und erhalte leider einen größeren Wert als die Struktur Daten aufgenommen hat.
Code:
struct sDaten
{
int iZahl;
char cZeichen;
char szString[256];
};
Code:
sDaten *pMeineDaten;
pMeineDaten = new sDaten;
FILE *pFile;
pFile = fopen("C:\\test.txt", "wb");
fwrite(pMeineDaten, sizeof(sDaten), 1, pFile);
fclose(pFile);
Dies ist dadurch zurückzuführen das bei Anlegen der Struktur mehr Speicherplatz benötigt wird als Daten aufgenommen werden - dadurch das die Daten an unterschiedliche Stellen im Arbeitsspeicher abgelegt werden.
Soweit das Problem! Sicherlich könnte ich jetzt "einfach" die einzelnen Größen "per Hand" zusammenzählen und damit arbeiten - das funktioniert.
Code:
int iSize = sizeof(int) + sizeof(char) + (sizeof(char) * 256);
fwrite(pMeineDaten, iSize, 1, pFile);
Doch den Umstand jedesmal die Strukturgröße "per Hand" zu ermitteln ist nicht nur Zeitverschwendung sondern weist auch eine große Fehleranfälligkeit auf.
Wie kann ich das Problem lösen?
(Noch zwei Zusatzfragem: Wie kann ich mit AnsiStrings in der Struktur speichern/laden? Wie sollte ich den Speicher/Ladevorgang mit einem Stream bewerkstelligen (um die C-Funktionen zu vermeiden)?)
Vielen Dank im voraus...
Daystalker