![]() |
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 |
Re: speicherproblem
Sollte es nicht so gehen?
Delphi-Quellcode:
Grüße
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; Klaus |
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 |
Re: speicherproblem
Hallo,
habe es oben kommentiert. Grüße Klaus |
Re: speicherproblem
vielen dank! alles klar!
ich werde es jetzt versuchen! |
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:
Eventuell solltest du da noch [dp]Ressourcenschutzblöcke[/dp] drumtun. Feste Datentypen zu speichern, geht sehr viel leichter:
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;
Delphi-Quellcode:
Dann wird einfach der komplette Unterarray genommen und geschrieben.
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; 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])) |
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 |
Re: speicherproblem
Hallo,
sorry, habe mich da ein wenig vertan. Nehme anstelle von Assign AssignFile, damit sollte es gehen. Zitat:
Grüße Klaus |
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 |
Re: speicherproblem
Zitat:
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