AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Record abspeichern-TFileStream??

Ein Thema von watwerbistdudenn · begonnen am 12. Jul 2005 · letzter Beitrag vom 12. Jul 2005
Antwort Antwort
watwerbistdudenn

Registriert seit: 12. Dez 2002
9 Beiträge
 
#1

Record abspeichern-TFileStream??

  Alt 12. Jul 2005, 16:54
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
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Record abspeichern-TFileStream??

  Alt 12. Jul 2005, 16:59
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
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Record abspeichern-TFileStream??

  Alt 12. Jul 2005, 17:02
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
watwerbistdudenn

Registriert seit: 12. Dez 2002
9 Beiträge
 
#4

Re: Record abspeichern-TFileStream??

  Alt 12. Jul 2005, 20:09
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:31 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