Delphi-PRAXiS :: Das Forum für Fragen zu Delphi
Das Experten Forum für Delphi Programmierer
Hilfe für CodeGear Delphi gibts es hier im Forum
Delphi Quelltexte und Source Codes
 
Delphi-PRAXiS :: Foren-ÜbersichtForen-Übersicht Delphi-PRAXiS Modul-ÜbersichtSite-Map Delphi-PRAXiS durchsuchenSuchen Delphi-PRAXiS Code-LibraryCode-Library Jetzt registrieren!Registrieren Login  
   
 
0
 
Delphi für Win32
dynamische Arrays in typitisierten Dateien speichern
Ein Delphi (Win32)-Thema von KahPee.

Vorheriges Thema anzeigen  |  Nächstes Thema anzeigen
Neuen Beitrag schreiben Auf Beitrag antworten
als PDF-Datei herunterladenThema ausdrucken
 
Delphi-PRAXiS Forum - Übersicht -> Sonstige Fragen zu Delphi
Seite 1 von 1   [ 8 Beiträge ]  
 
 Autor 
 Nachricht 
 
KahPee #1|Beitrag #1128372Verfasst am: 08.02.2010, 21:06      Titel: dynamische Arrays in typitisierten Dateien speichern Antworten mit Zitat
aktives Mitglied
Status: offline
Beiträge: 154
angemeldet: 12.05.2009
Turbo Delphi für Win32

Sprache: Delphi (Win32)

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: markieren
type Bild=record
        objectscount: integer
        objectlist: array of  Tobjects; //enthält obengenannte Informationen
       //....
       end;

var Bild1: Tbild;
    datei1: file of Tbild;


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.

Wie speicher ich nun den record "Bild" am besten ab?
Ich hatte da an typistisierte Dateien gedacht (keine Datenbank nötig).
Delphi-Quellcode: markieren
write(datei1, Bild1)//Bild1 in Datei1 speichern

Könnte es dabei besondere Probleme geben weil dieser Record dynamische Arrays enthält? Wenn ja wie löse ich die?
Würde auslesen über
Delphi-Quellcode: markieren
read(datei1,Bild1)//Datei auslesen und in Bild1 speichern
funktionieren?

Vielen Dank für die antworten.

mfg KahPee
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
mkinzler #2|Beitrag #1128375Verfasst am: 08.02.2010, 21:10      Titel: Re: dynamische Arrays in typitisierten Dateien speichern Antworten mit Zitat
Moderator
Beiträge: 27.696
angemeldet: 09.12.2005
Wohnort: Heilbronn
Delphi 2010 Professional

Zitat:
Könnte es dabei besondere Probleme geben weil dieser Record dynamische Arrays enthält?
Ja. Es wird so nicht gehen, weil eine typisierte Datei einen festen Aufbau eines Datensatzes voraussetzt
Zitat:
Wenn ja wie löse ich die?
Eine andere Form der Speicherung wählen. Z.B. XML
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
himitsu #3|Beitrag #1128376Verfasst am: 08.02.2010, 21:12      Titel: Re: dynamische Arrays in typitisierten Dateien speichern Antworten mit Zitat
sehr aktives Mitglied
Alter: 30
Status: offline
Beiträge: 13.853
angemeldet: 11.10.2003
Wohnort: Elbflorenz
Delphi 2010 Professional

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.

an alle schlaflosen Programmierer ... macht ein Upgrade, denn mit neuer Technik passiert sowas nicht > http://xkcd.com/571 Very Happy

www.fnse.de/img.htm

 Zuletzt bearbeitet von himitsu am 08.02.2010, 21:14, insgesamt 1-mal bearbeitet.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
KahPee #4|Beitrag #1128383Verfasst am: 08.02.2010, 21:22      Titel: Re: dynamische Arrays in typitisierten Dateien speichern Antworten mit Zitat
aktives Mitglied
Status: offline
Beiträge: 154
angemeldet: 12.05.2009
Turbo Delphi für Win32

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 Razz?

mfg KahPee
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
mkinzler #5|Beitrag #1128389Verfasst am: 08.02.2010, 21:28      Titel: Re: dynamische Arrays in typitisierten Dateien speichern Antworten mit Zitat
Moderator
Beiträge: 27.696
angemeldet: 09.12.2005
Wohnort: Heilbronn
Delphi 2010 Professional

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
http://de.wikipedia.org/wiki/Extensible_Markup_Language
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
KahPee #6|Beitrag #1128390Verfasst am: 08.02.2010, 21:31      Titel: Re: dynamische Arrays in typitisierten Dateien speichern Antworten mit Zitat
aktives Mitglied
Status: offline
Beiträge: 154
angemeldet: 12.05.2009
Turbo Delphi für Win32

Hier Wird in der .pdf beschrieben wie man bestimmte Units einbindet in das Projekt. Werden in dem Fall weitere Dateien benötigt?
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?)

 Zuletzt bearbeitet von KahPee am 08.02.2010, 21:35, insgesamt 1-mal bearbeitet.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
daywalker9 #7|Beitrag #1128391Verfasst am: 08.02.2010, 21:52      Titel: Re: dynamische Arrays in typitisierten Dateien speichern Antworten mit Zitat
sehr aktives Mitglied
Status: offline
Beiträge: 76
angemeldet: 01.01.2010
RAD-Studio 2010 Arc

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
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
himitsu #8|Beitrag #1128403Verfasst am: 08.02.2010, 22:23      Titel: Re: dynamische Arrays in typitisierten Dateien speichern Antworten mit Zitat
sehr aktives Mitglied
Alter: 30
Status: offline
Beiträge: 13.853
angemeldet: 11.10.2003
Wohnort: Elbflorenz
Delphi 2010 Professional

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.

an alle schlaflosen Programmierer ... macht ein Upgrade, denn mit neuer Technik passiert sowas nicht > http://xkcd.com/571 Very Happy

www.fnse.de/img.htm

 Zuletzt bearbeitet von himitsu am 08.02.2010, 22:26, insgesamt 1-mal bearbeitet.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
Anzeige-Optionen:    
 
Delphi-PRAXiS Forum - Übersicht -> Sonstige Fragen zu Delphi Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1   [ 8 Beiträge ]  
 
  Neuen Beitrag schreiben Auf Beitrag antworten
als PDF-Datei herunterladenThema ausdrucken
 
   
Gehe zu:  
Du darfst keine Beiträge in dieses Forum schreiben.
Du darfst auf Beiträge in diesem Forum nicht antworten.
Du darfst Deine Beiträge in diesem Forum nicht bearbeiten.
Du darfst Deine Beiträge in diesem Forum nicht löschen.
Du darfst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten.
Du kannst Dateien in diesem Forum nicht herunterladen.


Impressum / Kontakt
Allgemeine Geschäftsbedingungen
Verhaltenskodex & FAQ

Delphi-PRAXiS :: Das Forum für Delphi-Programmierer
Das Experten Forum für Delphi ProgrammiererHilfe für Borland Delphi gibts es hier im ForumDelphi Quelltexte und Source CodesDelphi-PRAXiS :: Das Forum für DelphiWindows APIInternet und NetzwerkeVCL und Datenbanken
 

Delphi-PRAXiS V.2005 III
© 2002-2010 by Daniel R. Wolf
powered by phpBB © phpBB Group

Impressum / Kontakt Allgemeine Geschäftsbedingungen