Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Array aus TFileStream auslesen? (https://www.delphipraxis.net/115528-array-aus-tfilestream-auslesen.html)

DeddyH 13. Jun 2008 13:19

Re: Array aus TFileStream auslesen?
 
Müsste Length nicht um 1 größer sein als High?

mkinzler 13. Jun 2008 13:20

Re: Array aus TFileStream auslesen?
 
Stimmt, das hab ich auch verschlammpert :oops:

mo_greene 13. Jun 2008 18:22

Re: Array aus TFileStream auslesen?
 
Wäre es dann so richtig?

Delphi-Quellcode:
  for i := 0 to High(Zutaten) do
  begin
    FS.Write(Zutaten[i], sizeOF(Zutaten));
  end;
Vielen Dank nochmal :)

Apollonius 13. Jun 2008 18:27

Re: Array aus TFileStream auslesen?
 
Nein, das muss SizeOf(Zutaten[i]) oder SizeOf(Basistyp) sein.

mo_greene 13. Jun 2008 18:29

Re: Array aus TFileStream auslesen?
 
Also folglich:

Delphi-Quellcode:
for i := 0 to High(Zutaten) do
  begin
    FS.Write(Zutaten[i], sizeOF(Zutaten[i]));
  end;
Danke :)

mo_greene 13. Jun 2008 19:12

Re: Array aus TFileStream auslesen?
 
Leider erhalte ich mit folgender Syntax:

Delphi-Quellcode:
  for i := 0 to High(Zutaten) do
  begin
    FS.Write(Zutaten, sizeOF(Zutaten[i]));
  end;
folgedes in der .dat Datei:

¨L¸¨L¸¨L¸¨L¸¨L¸¨L¸¨L¸¨L¸¨L¸¨L

Dies soll den Inhalt in dem Array darstellen. Das kann doch nicht richtig sein, oder wird das so abgespeichert?

Neutral General 13. Jun 2008 19:19

Re: Array aus TFileStream auslesen?
 
Zeig mal die Definition von dem Zutaten-Record.

Es muss ein packed record sein und es dürfen keine Strings enthalten sein, höchstens Shortstrings!

mkinzler 13. Jun 2008 19:19

Re: Array aus TFileStream auslesen?
 
Was steht den in Zutaten drin/wie ist der Typ deklariert?

FAlter 13. Jun 2008 19:19

Re: Array aus TFileStream auslesen?
 
Hi,

du musst schon das entsprechende Element speichern.

Delphi-Quellcode:
for i := Low(Zutaten) to High(Zutaten) do
  begin
    FS.Write(Zutaten[i], sizeOF(Zutaten[i])); //das [i] fehlte!
  end;
Oder gleich so:

Delphi-Quellcode:
FS.Write(Zutaten[Low(Zutaten)], Length(Zutaten) * SizeOf(Zutaten[Low(Zutaten)]));
Dann werden alle Elemente in einem Rutsch gespeichert.

Mfg
FAlter

Apollonius 13. Jun 2008 19:24

Re: Array aus TFileStream auslesen?
 
Wenn der Basistyp allerdings eine unhandliche Größe hat, wird zu viel gespeichert - dennoch ist FAlters Lösung zu bevorzugen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:58 Uhr.
Seite 2 von 4     12 34      

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