![]() |
Array of String in einer externen Datei speichern und laden
Hallo Zusammen. Dies wird wohl vorerst mein letzter Thread sein, ich stehe nun kurz vor Vollendung meines Programmes.
Zum Thema Ich habe ein paar Str. Werte in einem Array gespeichert, welche in einer externen Datei gespeichert und im Anschluss wieder ausgelesen werden sollen. Mit einem Array of extended hat das wunderbar funktioniert:
Delphi-Quellcode:
Den Code habe ich abgeschrieben. Mit einem String hat das ganze nicht funktioniert, dazu habe ich auch leider nichts hilfreiches gefunden.procedure TForm2.Werte_speichernClick(Sender: TObject); var fs:TFileStream; i : integer; begin fs:=TFileStream.create(ExtractFilePath(ParamStr(0)) + 'Projekte\' + edit8.Text + '\Daten.dat',fmCreate); try fs.write(db,sizeOf(db)); finally fs.free; end; procedure TForm2.Werte_ladenClick(Sender: TObject); var fs:TFileStream; begin if fileExists(ExtractFilePath(ParamStr(0)) + 'Projekte\' + edit8.Text + '\Daten.dat') then begin fs:=TFileStream.create(ExtractFilePath(ParamStr(0)) + 'Projekte\' + edit8.Text + '\Daten.dat',fmOpenRead); try if fs.size >= sizeOf(db) then begin fs.read(db,sizeOf(db)); end; finally fs.free; end; end else showMessage('Werte nicht auffindbar'); end; Hier wird das Thema mal aufgegriffen, aber nicht weiter geklärt : ![]() Um das Problem zu lösen, habe ich drei Ideen, 1. es analog versuchen, 2. die Werte in einer StringList speichern, da hier die Möglichkeit des Speicherns und Ladens schon gegeben ist. 3. die Strings Binär umwandeln Leider hat mich keine Idee zum Erfolg gebracht, aber vielleicht hat hier jemand noch eine Vorschlag, den ich ausprobieren kann. Vielen Dank für Unterstützung! |
AW: Array of String in einer externen Datei speichern und laden
.. eine Array of extended hat eine fest definierte Größe.
Ein Array of String hat keine fest definerte Größe, die Strings in dem Array können alle unterschiedlich lang sein. Grüße Klaus |
AW: Array of String in einer externen Datei speichern und laden
Im Gegensatz zu Extended hat ein String ja keine feste Größe, da musst Du schon etwas mehr Aufwand betreiben. So könntest Du je Array-Element zunächst dessen Länge (oder Bytegröße) in Deinen Stream schreiben und anschließend den eigentlichen String. Beim Lesen dann andersherum: zuerst die Länge auslesen, entsprechend Speicher reservieren und dann aus dem Stream lesen.
|
AW: Array of String in einer externen Datei speichern und laden
Hm, warum nicht in einer TStringList umfüllen?
|
AW: Array of String in einer externen Datei speichern und laden
Zitat:
Um das mal verbal zu beschreiben. Ich schreibe die Werte des Arrays in ein Dokument (Jedes Element eine Zeile). Dann lese ich jede Zeile bis zu einem Wert x aus und hänge alle Zeichen die kein '' sind aneinander und befülle anschließend wieder mein Array. Blöde Frage, wie kann ich so etwas umsetzten? |
AW: Array of String in einer externen Datei speichern und laden
Zitat:
|
AW: Array of String in einer externen Datei speichern und laden
So würde ich den Inhalt der Stringlist ins Array wieder einlesen:
Delphi-Quellcode:
Steffen
var
Form1: TForm1; StrArr: array of string; MyStringList: TStringList; procedure TForm1.Button1Click(Sender: TObject); var I : integer; begin for I := 0 to MyStringList.Count - 1 do //Stringliste Zeilenweise abarbeiten begin SetLength(StrArr,Length(StrArr)+1); //Speicher reservieren StrArr[High(StrArr)] := MyStringList.Strings[I]; //Strings ins Array schreiben end; MyStringList.Free; //nur zur Kontrolle den Inhalt des StringArrays in einem Memo anzeigen for I := 0 to High(StrArr) -1 do begin Memo1.Lines.Add(StrArr[I]); end; end; procedure TForm1.FormCreate(Sender: TObject); begin MyStringList := TStringList.Create; MyStringList.LoadFromFile('test.bla'); end; |
AW: Array of String in einer externen Datei speichern und laden
Falls du nicht den "Umweg" über die Stringliste gehen willst, kannst du dein Array auch direkt zeilenweise in eine Datei schreiben. Am komfortabelsten finde ich das mittels eines
![]() Analog gibt es zum Lesen den TStreamReader mit der Methode ReadLine. Vielleicht ist das ja auch noch mal eine Anregung. :-) |
AW: Array of String in einer externen Datei speichern und laden
oder auch so:
Delphi-Quellcode:
var
StrArr: TArray<string>; begin StrArr := MyStringList.ToStringArray; Memo.Lines.Clear; Memo.Lines.AddStrings(StrArr); end; |
AW: Array of String in einer externen Datei speichern und laden
Zitat:
Delphi-Quellcode:
Hier bekomme ich immer die Meldung, dass eine Zugriffverletzung bei Adresse ... vorliegt.procedure TForm2.Werte_speichernClick(Sender: TObject); var fs,ds:TFileStream; i : integer; bsb : TStringList; begin bsb.Create; try for i := 0 to 519 do bsb.Add(bzb[i]); end; bzb ist bereits voll definiert, also von 0 bis 519, und zwar mit '' |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:04 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