Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

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)

mo_greene 13. Jun 2008 13:01


Array aus TFileStream auslesen?
 
Hallo,


ich habe ein dynamisches Array, welches ich zur Laufzeit in ein TFileStream speicher:

Delphi-Quellcode:
FS.Write(Zutaten, sizeOF(Zutaten));
Beim Neustart des Programms, soll aus diesem TFileStream das Array wieder ausgelesen werden.

Delphi-Quellcode:
FS.Read(Zutaten, sizeOF(Zutaten));



Leider funktioniert das nicht. Ich bekomme keine Fehlermeldung, jedoch ist das Array nach dem auslesen aus der Datei leer.

Was habe ich falsch gemacht? Geht das überhaupt so?

Vielen Dank!

mkinzler 13. Jun 2008 13:04

Re: Array aus TFileStream auslesen?
 
Das SizeOf beim Laden wird dir eine andere Größe liefern als beim Speichern. Speichere die Größe mit ab

Neutral General 13. Jun 2008 13:05

Re: Array aus TFileStream auslesen?
 
Hi mo_greene,

Zitat:

Zitat von mo_greene
Geht das überhaupt so?

Nein so geht es leider nicht ;) SizeOf(Zutaten) ergibt 4, denn Zutaten selbst ist nur ein Pointer auf die Array-Daten. Du musst dein Array mit einer for-Schleife in die Datei schreiben und auch wieder auslesen.

Vergiss nicht die Größe des Arrays auch in der Datei abzuspeichern damit du nachher weißt wie viel du einlesen kannst ;)

Gruß
Neutral General

mo_greene 13. Jun 2008 13:07

Re: Array aus TFileStream auslesen?
 
Super vielen Dank für die Antwort.

Kann ich die Daten aus meinem Array in die gleiche Datei speichern, in die auch meine anderen Daten aus div. Variablen gespeichert werden?

mkinzler 13. Jun 2008 13:08

Re: Array aus TFileStream auslesen?
 
Warum nicht?

mo_greene 13. Jun 2008 13:09

Re: Array aus TFileStream auslesen?
 
Ok super.

Zitat:

Du musst dein Array mit einer for-Schleife in die Datei schreiben und auch wieder auslesen.

Vergiss nicht die Größe des Arrays auch in der Datei abzuspeichern damit du nachher weißt wie viel du einlesen kannst Wink
Wie mache ich das denn genau?

Danke :)

mkinzler 13. Jun 2008 13:13

Re: Array aus TFileStream auslesen?
 
Delphi-Quellcode:
FS.Write ( Length( Zutaten);
for i := 0 to Length( Zutaten) do
begin
    FS.Write( Zutaten[i], SizeOf( TZutaten));
end;

Neutral General 13. Jun 2008 13:15

Re: Array aus TFileStream auslesen?
 
Hi,

Naja du weißt doch wie man auf einzelne Elemente des Arrays zugreift.

In einer Schleife geht das so:

Delphi-Quellcode:
for i:= 0 to High(Array) do
  // Etwas mit Array[i] tun
Die größe des Arrays erhälst du mit

Delphi-Quellcode:
Length(Array);
@mkinzler: Sagmal hast du so ne Taste auf der Tastatur die automatisch richtig auf alle aktuellen Threads in der DP antwortet ? :roll:

Ha! Von wegen richtig. Hast ne Klammer vergessen und es muss von 0 bis High(Array) gehn und nicht bis Length(Array) :P :mrgreen:

Gruß
Neutral General

mkinzler 13. Jun 2008 13:18

Re: Array aus TFileStream auslesen?
 
Ok die Klammer hab ich verschlammpt.
Aber bei dynamischen Arrays (welchen immer bei 0 beginnen) sollte High(), das selbe wie Length() ergeben.

Neutral General 13. Jun 2008 13:19

Re: Array aus TFileStream auslesen?
 
Probiers aus ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:11 Uhr.
Seite 1 von 4  1 23     Letzte »    

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