Delphi-PRAXiS
Seite 3 von 4     123 4      

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 19:27

Re: Array aus TFileStream auslesen?
 
Zitat:

Zitat von Neutral General
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!

Sorry, was ist ein Record? :oops:

Zu "Zutaten":

Delphi-Quellcode:
Zutaten    : array of string;
Delphi-Quellcode:
SetLength(Zutaten,10); // dies wird leider - aufgrund der Komplexität des Programms - mehrmals aufgerufen, ist aber nicht schlimmm oder?
Delphi-Quellcode:
  for i := 0 to ZusammensetzungLb.Count - 1 do
  begin
    cock.SetZutaten(ZusammensetzungLb.Items[i],i);
  end; //Hier werden Strings aus einer Listbox übergeben. Dieser Inhalt soll letzendlich gespeichert werden.
Delphi-Quellcode:
procedure TCocktail.SetZutaten(n: string; i: Integer);
(* Dient dazu, in das Array zu schreiben *)
begin
  Zutaten[i] := n;
end;
Speicherung des Inhalts:

Delphi-Quellcode:
  for i := 0 to High(Zutaten) do
  begin
    FS.Write(Zutaten[i], sizeOF(Zutaten[i]));
  end;
Herauskommen tut folgendes in der .dat Datei:
Delphi-Quellcode:
Í^
, was natürlich nicht dem Inhalt entspricht!


Vielen, vielen Dank! Ich hoffe mir kann jemand helfen :oops: :(

mkinzler 13. Jun 2008 19:29

Re: Array aus TFileStream auslesen?
 
Ersetze
Delphi-Quellcode:
Zutaten    : array of string;
mit
Delphi-Quellcode:
Zutaten    : array of ShortString;
oder einer bestimmten Länge.

Neutral General 13. Jun 2008 19:29

Re: Array aus TFileStream auslesen?
 
Sag doch das es Strings sind.... grml. :wall:

einen String speicherst du so ab:

Delphi-Quellcode:
l := length(String);
Write(l,SizeOf(Integer));
Write(String[1],l);
Auslesen:

Delphi-Quellcode:
Read(l,SizeOf(Integer));
SetLength(String,l);
Read(String[1],l);
das musst du jetzt eben auf dein Array übertragen

Gruß
Neutral General

DeddyH 13. Jun 2008 19:30

Re: Array aus TFileStream auslesen?
 
Was willst Du mit
Zitat:

Delphi-Quellcode:
SetLength(Zutaten,10);

erreichen?

FAlter 13. Jun 2008 19:31

Re: Array aus TFileStream auslesen?
 
Hi,

verwende doch eine Delphi-Referenz durchsuchenTStringList statt deines Arrays und deren Methode SaveToFile.

Mfg
FAlter

mo_greene 13. Jun 2008 19:32

Re: Array aus TFileStream auslesen?
 
Huch :shock:...ich habe string mit shortstring ersetzt (@mkinzler) und aufeinmal gehts :-D
Danke!!

Zitat:

Zitat von DeddyH
Was willst Du mit
Zitat:

Delphi-Quellcode:
SetLength(Zutaten,10);

erreichen?

Naja muss ich nicht sagen, wie lang das Array ist?

DeddyH 13. Jun 2008 19:35

Re: Array aus TFileStream auslesen?
 
Zitat:

Zitat von FAlter
verwende doch eine Delphi-Referenz durchsuchenTStringList statt deines Arrays und deren Methode SaveToFile.

Sehe ich auch als einfacher an.

Zitat:

Zitat von mo_greene
Naja muss ich nicht sagen, wie lang das Array ist?

Schon, aber wenn es immer 10 sind, kannst Du es doch gleich als array[0..9] deklarieren.

mo_greene 13. Jun 2008 19:38

Re: Array aus TFileStream auslesen?
 
Zitat:

Zitat von DeddyH
Zitat:

Zitat von FAlter
verwende doch eine Delphi-Referenz durchsuchenTStringList statt deines Arrays und deren Methode SaveToFile.

Sehe ich auch als einfacher an.

Ja okay, aber momentan funktioniert es, so wie es ist und ich habe aus dem String-Array nur ein ShortString-Array gemacht. Ich lasse es lieber erstmal so :-D Trotzdem vielen Dank!

Zitat:

Zitat von DeddyH
Zitat:

Zitat von mo_greene
Naja muss ich nicht sagen, wie lang das Array ist?

Schon, aber wenn es immer 10 sind, kannst Du es doch gleich als array[0..9] deklarieren.

Ja da hast du recht. Kann ich die Länge auch weglassen, wenn der Array dynamisch wachsen soll? Also, je nachdem wieviele Einträge reingeschrieben werden während der Laufzeit?

DeddyH 13. Jun 2008 19:39

Re: Array aus TFileStream auslesen?
 
Nee, wenn Du eine Größe angibst, gilt diese auch.

mo_greene 13. Jun 2008 19:45

Re: Array aus TFileStream auslesen?
 
Und wenn ich keine Angebe?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:08 Uhr.
Seite 3 von 4     123 4      

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