![]() |
dynamische Arrays in typitisierten Dateien speichern
Hallo,
ich habe ein Programm bei dem verschiedene Daten anfallen. Es handelt sich dabei um eine Art MSPaint-Klon. Wenn dort ein Objekt erzeugt wird (z.B. eine Linie) soll er alle Daten die nötig sind für diese Linie speichern (Anfangsposition, Endposition, Stiftdicke etc.) Mit der Zeit werden so verschiedene Objekte erstellt, die alle in einer Liste gepeichert werden.
Delphi-Quellcode:
In dem Fall das es sich bei dem Objekt um eine Freihandzeichnung handelt, werden von JEDEM gezeichneten Pixel die Koordinaten gespeichert. D.H. in dem Fall enthält Tobjects einen dynamischen Array Pixels.
type Bild=record
objectscount: integer objectlist: array of Tobjects; //enthält obengenannte Informationen //.... end; var Bild1: Tbild; datei1: file of Tbild; Wie speicher ich nun den record "Bild" am besten ab? Ich hatte da an typistisierte Dateien gedacht (keine Datenbank nötig).
Delphi-Quellcode:
Könnte es dabei besondere Probleme geben weil dieser Record dynamische Arrays enthält? Wenn ja wie löse ich die?
write(datei1, Bild1)//Bild1 in Datei1 speichern
Würde auslesen über
Delphi-Quellcode:
funktionieren?
read(datei1,Bild1)//Datei auslesen und in Bild1 speichern
Vielen Dank für die antworten. mfg KahPee |
Re: dynamische Arrays in typitisierten Dateien speichern
Zitat:
Zitat:
|
Re: dynamische Arrays in typitisierten Dateien speichern
dynamische Arrays, Strings, Interfaces und Objekte sind innerhalb des Records nur Pointer auf ihre Daten.
Heißt: Du mußt den Inhalt des Arrays manuell speichern, welches in solch einer typisierten Datei nicht geht. [add] Selbst wenn du einen derartigen Record und den zugehörigen Array-Inhalt in einer Datei speicherst, wirst du beim auslesen des Records, aus der Datei, am Speichermanagement des Arrays rumspielen müssen, da hierbei ein ungültiger "Array-Zeiger" im Record enthalten sein wird. |
Re: dynamische Arrays in typitisierten Dateien speichern
Ok, ich werde mich dann mal daran machen das mit dem vorgeschlagenen XML zu realisieren. Dazu noch ein paar Fragen:
1.) muss ich bei Weitergabe des Programms neben der .exe noch andere Dateien weitergeben? (Hab da mal was in Richtung Datenbanken gehört) 2.) muss jeder Wert einzelnd eingschrieben werden oder kann man das ganze automatisieren? (Im worstcase würd ich wohl schleifen programmieren müssen. 3.) Ist XML halbwegs erlernbar :P? mfg KahPee |
Re: dynamische Arrays in typitisierten Dateien speichern
zu 1.) Je nach verwendeten XML-Parser ist dieser mitzuliefern ( Z.B. bei MSXML). Eine Datenbank wäre natürlich eine weitere Option
zu 2.) Automatisch wird es wohl nicht gehen zu 3.) XML ist eng mit HTML; also eine Markup Language ![]() |
Re: dynamische Arrays in typitisierten Dateien speichern
![]() Und noch ne Frage ist mir gekommen. Ist XML halbweges (!) schnell? Außerdem: werden alle Daten in der xml-Datei als string gespeichert oder immer in dem entsprechenden Format? (sind also keine Formatierungen von integers in Strings und beim Auslesen umgekehrt, nötig?) |
Re: dynamische Arrays in typitisierten Dateien speichern
es kommt auf den parser an. zB MSXML ist einer der schnellsten die ich kenne. dort werden beim auslesen die daten im OleVariant geliefert, d.h. du brauchst dich eigentlich nicht um das konvertieren kümmern
|
Re: dynamische Arrays in typitisierten Dateien speichern
XML kann schnell sein oder auch nicht ... je nach Art und Menge der Daten und vorallem je nach verwendeter XML-Lib.
Langsamer als eine komplett binäre Variante, wie z.B. eine typisierte Datei, ist es schon etwas. Was das Speichern/Auslesen betrifft, da gibt es für verschiedenste Dinge passende Serialisierungen. Wobei MSXML einer der Langsamsten und Speicherhungrigsten, welche ich kenne. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:54 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 by Thomas Breitkreuz