Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Record abspeichern-TFileStream?? (https://www.delphipraxis.net/49533-record-abspeichern-tfilestream.html)

watwerbistdudenn 12. Jul 2005 15:54


Record abspeichern-TFileStream??
 
Servus,
bevor ihr mich alle steinigt ich hab schon im forum danach gesucht und es gibt auch echt viel darüber aber irgendwie funktioniert das net bei mir.

hier mal der code:
Delphi-Quellcode:
type
tbuddy = record
  nick, geb, hobby, beruf, ort : string;
  foto: TJpegImage;
  gallerie: array[1..10] of TJpegImage;
end;

var
myprofil: TBuddy;

procedure tform1.save;
var
datei:TFileStream;
begin
datei:=TFileStream.Create(Pchar('test.txt'),fmCreate);
Datei.WriteBuffer(myprofil,Sizeof(myprofil));
datei.Free;
end;
Wenn ich das jetzt aber speicher ist die datei immer 64 byte groß egal wie gros die bilder sind.

In myprofil steht auch was drin daran ligt es nicht.

Wie kann ich es denn richtig speichern und wieder laden??

Schon mal danke im vorraus!!

ralf

Jens Schumann 12. Jul 2005 15:59

Re: Record abspeichern-TFileStream??
 
Hallo,
kein Wunder. Du speicherst ja nur die Zeiger auf die Datentypen ab.

Vergiss Records !!!

Dies ist der klassiche Fall für den Einsatz der dpcollection unit

Bernhard Geyer 12. Jul 2005 16:02

Re: Record abspeichern-TFileStream??
 
Ist ja auch klar.

Strings werden nur als Zeiger in der Struktur gespeichert.
TJpegImage nur als Zeiger auf die Images

nick, geb, hobby, beruf, ort 5 * Zeiger(4 Byte) = 20 Byte
foto: TJpegImage: 1 * Zeiger = 4 Byte
gallerie: array[1..10] of TJpegImage; 10 * Zeiger = 40 Byte

-> 64 Byte.


Für Strings könntest Du z.B. Längendefinierte Strings String[100] verwenden.
Für TJpegImage ist das einfachste erst eine Längenangabe (4 Byte) und den Inhalt des JpegImage in einen MemoryStream kopierst und den in der Datei speichert.

=> Arbeite mit TFileStream nötig, um die Daten korrekt zu speichern.

watwerbistdudenn 12. Jul 2005 19:09

Re: Record abspeichern-TFileStream??
 
Danke für die antworten.
also das mit streams scheint mir einfacher als das erste.
Aber wie kann ich das denn genau machen.
Mit streams hat ich überhaupt keine Erfahrung.
Über ein wenig Code würd ich mich riesig freun!!
danke
ralf


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz