Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi speicherproblem (https://www.delphipraxis.net/82903-speicherproblem.html)

donmarkus 21. Dez 2006 17:43


speicherproblem
 
also,
bin neu(3-4 monate) im delphi coden und habe mal ne frage.
also ich möchte ein komplettes array in eine .txt datei laden und später wieder komplett auslesen. es handelt sich um ein 2d arrey. ich weiß mit einer datenbank wäre es besser aber damit kenne ich mich überhaupt nicht aus! außerdem ist es für den user besser, wenn er die strings aus einer txt datei lesen kann.

mit readfromfile,savetofile habe ich es schon verscuht.... aber nicht so hinbekommen wie es sein soll.

danke!
mfg donmarkus

Klaus01 21. Dez 2006 17:54

Re: speicherproblem
 
Sollte es nicht so gehen?

Delphi-Quellcode:
type
  MyArray = array[1..10,1..10] of String[255]; // ein Type erstellen

var
  MyFile: File of MyArray  // ein File mit dieser Typenstruktur
  dataSet : MyArray;       // ein DatenSatz

begin
  Assign(MyFile,'MyArrayFile.dat'); // dem logischen File eine "physikalische" Datei zurordnen.
  Rewrite(MyFile);                  // die Datei wird erstellt, sollte es schon eine mit diesem Namen geben
                                     // wird sie überschrieben  
  dataSet[1,2]:=test;              
  ....
  Write(MyFile,DataSet);            // Das Array wird in die Datei geschrieben
  CloseFile(MyFile);                // Die Datei wird geschlossen.

  // zum Lesen öffnen
  reset(MyFile);
  Read(MyFile,dataSet);
  CloseFile(MyFile);

...
end;
Grüße
Klaus

donmarkus 21. Dez 2006 18:06

Re: speicherproblem
 
ich glaube so etwas brauche ich.
ich verstehe leider nicht was delphi da genau macht. könnten sie mir das bitte kurz erklären? was in welchem schritt passiert?
vielen dank für die schnelle antwort!

mfg donmarkus

Klaus01 21. Dez 2006 18:13

Re: speicherproblem
 
Hallo,

habe es oben kommentiert.

Grüße
Klaus

donmarkus 21. Dez 2006 18:26

Re: speicherproblem
 
vielen dank! alles klar!
ich werde es jetzt versuchen!

DGL-luke 21. Dez 2006 18:30

Re: speicherproblem
 
--
ich habs hier mal mit nem filestream
--

was für daten hast du im array?

Zum Speichern von strings zum Beispiel:

Delphi-Quellcode:
FS := TFileStream.Create('file.txt',fsCreate or fsWrite);

for i := 0 to high(array) do
begin
  FS.Write(high(array[i])+1); // länge des arrays, kann dann leichter eingelesen werden
  for k := 0 to high(array[i]) do
  begin
    size := length(array[i]); // bzw. SizeOf(array[i]) //länge des strings
    FS.Write(size, SizeOf(size));
    FS.Write(array[i],size);
  end;
end;

FS.Free;
Eventuell solltest du da noch [dp]Ressourcenschutzblöcke[/dp] drumtun. Feste Datentypen zu speichern, geht sehr viel leichter:

Delphi-Quellcode:
FS := TFileStream.Create('file.txt',fsCreate or fsWrite);

for i := 0 to high(array) do
begin
  FS.Write(high(array[i])+1); // länge des arrays, kann dann leichter eingelesen werden
  FS.Write(array[i],high((array[i]+1)*SizeOf(array[i,0]));
end;

FS.Free;
Dann wird einfach der komplette Unterarray genommen und geschrieben.

Das Laden geht dann analog:

- länge auslesen (FS.read)
- array per setlength() auf länge bringen
- FS.read(array[i,0],size*SizeOf(array[i,0]))

donmarkus 21. Dez 2006 19:22

Re: speicherproblem
 
sorry dass ich es ned blicke*gg*

bei "Assign (MyFile, 'MyArrayFile.dat' );" kommt immer die fehlermeldung :
[Fehler] Unit1.pas(56): E2010 Inkompatible Typen: 'TPersistent' und 'Text'

und bei test kommt immer undefinierter bezeichner ( was muss ich für test einsetzen?)

sry!
mfg donmarkus

Klaus01 21. Dez 2006 20:29

Re: speicherproblem
 
Hallo,

sorry, habe mich da ein wenig vertan.
Nehme anstelle von Assign AssignFile, damit sollte es gehen.

Zitat:

und bei test kommt immer undefinierter bezeichner ( was muss ich für test einsetzen?)
Was für ein Test?

Grüße
Klaus

donmarkus 22. Dez 2006 11:03

Re: speicherproblem
 
dataSet[1,2]:=test; <- dieses test ?? für was ist das is dass ne string variable oder was kannich mit der machen?

danke für die schnellen antowrten!
mfg donmarkus

Klaus01 22. Dez 2006 11:19

Re: speicherproblem
 
Zitat:

Zitat von donmarkus
dataSet[1,2]:='test'; <- dieses test ?? für was ist das is dass ne string variable oder was kannich mit der machen?

danke für die schnellen antowrten!
mfg donmarkus

Habe ich übersehen, da gehören noch die ' ' dran. War als TestString gedacht.
Ich weiß ja nicht mit welchen Sachen Du Dein Array befüllen willst.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:31 Uhr.

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