![]() |
verschiedene Datentypen speichern ?
Hallo Leute,
Ich habe in meinem Programm mehrere Arrays welche wiederum verschiedene Datentypen beinhalten. Diese Daten sollen gespeichert werden. Nun habe ich das bisher mit normalen Textfiles gemacht und das klappt auch recht gut, allerding sind sie doch etwas sehr schnell sehr groß. Dieses Problem würde ich gerne umgehen indem ich eine andere Speichermethode schreibe. ich will also direkt die Bytes in die Datei schreiben. Wie das geht weiß ich schon, mein Problem liegt an der Umwandlung der verschiedenen Datentypen. Wenn ich einen Datentyp "Byte" habe stellt das ja nicht allzu große Probleme dar :) aber bei Typen wie Integer oder sogar Int64 und Fließkommazahlen vom Typ Single oder Double. Wie wandle ich diese Zahlentypen am besten um damit ich sie schön speichern kann ? Wenn jemand einen besseren Vorschlag hat wie ich mein Problem (allgemein das mit dem Speichern) lösen kann dann nichts wie raus damit - bin für alles offen. Also schonmal vielen Dank Gruss Urba |
Re: verschiedene Datentypen speichern ?
Zitat:
Typisierte Dateien (Records) kann man bequem mit einen Stream wegspeichern. |
Re: verschiedene Datentypen speichern ?
Hallo,
Ungefähr so ...
Delphi-Quellcode:
Hoffe das hilft beim Verständnis...
type
TBsp = class a : String; b : Byte; c : Int64 d : Word; e : Single; end; var a : array [1..10000] of TBsp; Gruss Urba |
Re: verschiedene Datentypen speichern ?
Hai Urba,
wie Luckie schon vorgeschlagen hat würde ich das mit einem Stream lösen. Das könnte dann z.B. So aussehen:
Delphi-Quellcode:
type
TBsp = Packed Record a : String[255]; // Sonst geht es Imho nicht b : Byte; c : Int64; d : Word; e : Single; end; var a : array [1..10000] of TBsp; // Alle Daten aus dem Array in eine Datei speichern. procedure TForm1.Button1Click(Sender: TObject); var ndx : Integer; stream : TMemoryStream; begin stream := TMemoryStream.Create; try for ndx := Low(a) to High(a) do // Alle Records im Array durchlaufen begin stream.Write(a[ndx],Sizeof(TBsp)); // Jeden Record in den Stream kopieren end; stream.SaveToFile('c:\meinedaten.dat'); // Stream speichern finally stream.Free; end; end; |
Re: verschiedene Datentypen speichern ?
Hallo Leute,
Danke für den Hinweis aber ich glaube den kann ich nicht komplett ausnutzen, weil es sich bei mir ja um Klassen handelt und nicht um Records. Bei einigen tausend Arrayeinträgen fällt es schon etwas ins Gewicht ob der Eintrag im Array "nil" (class) ist oder ob die Daten mit dem Minimalwert eingetragen sind (record). Ausserdem prüfe ich mittlerweile in allen Funktionen die auf die verschiedenen Arrays zugreifen a[xy] = nil als Schlussabfrage. Dies müsste ich aber ALLES wieder umschreiben. Gäbe es da nicht eine andere Lösung ? Gruss Urba |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 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