Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi FileStream und Record (https://www.delphipraxis.net/44164-filestream-und-record.html)

blackfoxx 14. Apr 2005 15:16


FileStream und Record
 
Hi Leute,
ich hab mich mal nen bissl hier umgesehen und nach einer Lösung für mein Problem gesucht. Da ich nichts gefunden habe, frag ich euch mal direkt.
Ich habe eine Datenstruktur aus Zahlen(byte) und Strings und die soll in einen FileStream. Zur Verdeutlichung mal mein Record:
Delphi-Quellcode:
type fach  = Record
                Name:string[20];
                elf1:byte;
                elf1_einbringen:boolean;
              //...
               end;
      Punkte = Record
                Name:String[40];
                GebDatum:String[10];
                GebOrt:String[30];
                Wohnort:String[30];
                SK:String[5];
                SKL:string[40];
                Grundfach:array[1..11] of fach;
                Seminarfach:Semi;
               end;

var Leistungen:Punkte;
Der Stream wird folgendermaßen gespeichert:
Delphi-Quellcode:
procedure TForm1.Speichernunter1Click(Sender: TObject);
var Datei:TFileStream;
begin
 if Speichern.Execute then
 begin
  try
   datei:=TFileStream.Create(Pchar(speichern.FileName),fmCreate);
   Datei.WriteBuffer(Leistungen,Sizeof(Leistungen));
  finally
   freeandnil(Datei);
  end;
 end;
end;
Das Problem: Im Array "Grundfach" wird von der Variable "Name" nur der allererste Wert gespeichert. Alle folgenden bleiben leer!

Ich hoffe ihr habt einigermaßen verstanden, was ich vor habe und könnt mir weiter helfen. :-D

Grüße Bf

marabu 14. Apr 2005 15:45

Re: FileStream und Record
 
Ganz ernsthaft: vielleicht steht in den anderen Variablen gar nichts drin...

blackfoxx 14. Apr 2005 16:44

Re: FileStream und Record
 
Hey Sorry!!..Aber ganz blöd bin ich ja auch nicht! :freak:
Ich hab natürlich vorher kontrilliert, ob die Werte übernommen werden.

marabu 14. Apr 2005 16:48

Re: FileStream und Record
 
Ich frage nur, weil ich deinen Code in einem Minimal-Programm verwendet habe und bei mir funktioniert es erwartungsgemäß. Auch sorry.

Jens Schumann 14. Apr 2005 16:48

Re: FileStream und Record
 
Du musst jeden fasch-Record expilzit in den Strema schreiben. D.h. innerhalb einer Schleife.

P.S. um dieses Problem fast automatisch zulösen (und OOP gemäß ohne Records) gibt
es in der Codelib die dpCollection unit

marabu 14. Apr 2005 16:52

Re: FileStream und Record
 
Zitat:

Zitat von Jens Schumann
Du musst ...

Sollte das nicht besser "Du kannst ..." heißen?

Jens Schumann 14. Apr 2005 16:54

Re: FileStream und Record
 
Zitat:

Zitat von marabu
Zitat:

Zitat von Jens Schumann
Du musst ...

Sollte das nicht besser "Du kannst ..." heißen?

ja - ich hätte auch schreiben können Du könntest, Du solltest, Du müsstes oder wenn es unbedingt sein muss könntest Du :roll:

blackfoxx 14. Apr 2005 16:59

Re: FileStream und Record
 
Hmm..
Das wollte ich eigentlich umgehen. Aber wenn es nicht anders geht. Muss ich das beim auslesen dann auch tun?!?
Thx

marabu 14. Apr 2005 17:04

Re: FileStream und Record
 
"Du musst" klingt so, als wäre der Versuch mit WriteBuffer die Gesamtstruktur zu schreiben von vorne herein zum Scheitern verurteilt. Das stimmt nicht, aber es gibt sicher professionellere Lösungen.

Zitat:

Zitat von marabu
... bei mir funktioniert es erwartungsgemäß.


Jens Schumann 14. Apr 2005 17:14

Re: FileStream und Record
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
alles was ich in diesem Thread bislang geschrieben habe hat ab jetzt keine Gültigkeit mehr.
Ich habe mit einem kleinen Testprogramm versucht Dein Problem nachzuvollziehen. Es
muss so funktionieren, wie Du Dir das vorgestellt hast. D.h. Dein Fehler muss an einer anderen Stelle liegen.

Entschulidge bitte mein fehlerhaften Aussagen. Das muss wohl an den Records liegen. Die Dinger
verwende ich schon seit 3 oder 4 Jahren nicht mehr.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:37 Uhr.
Seite 1 von 2  1 2      

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