Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Objecte oder Objectlisten Speichern (https://www.delphipraxis.net/48862-objecte-oder-objectlisten-speichern.html)

richard_boderich 26. Jul 2005 15:41

Re: Objecte oder Objectlisten Speichern
 
@all

ok da ich hier so nicht weiterkomme und alle hier aufgeführten Vorschlaege zu komplex oder für meinen Zweck einfach ÜBERDIMENSIONIERT sind wuerd ich es
gern nochmal an einem kleinen konkreten beispiel. ich bitte euch meine schlussfolgerungen zu korrigieren falls sie falsch sein sollten.

gehen wir mal davon aus , das ich nur ein einzelnes object speichern will dessen definition so aussieht.

Delphi-Quellcode:
 TMapObject = class(TControl)
  private
    X,Y: Integer;                 // Position der Einheit auf Karte X,Y
    Typ: String;                  // z.B. "Infantry"    

   published
   
    property MapX :Integer read x write x;
    property MapY :Integer read y write y;
 
  public
    constructor Create(Owner: TComponent; MapX: Integer; MapY: Integer); reintroduce; virtual;
       { Public-Deklarationen } 
  end;
also ich brauch

1. keinen generischen serialisierer, da ich den aufbau des objects kenne, er muss also nicht generisch sein und eine serializer zu schreiben übersteigt meinen
Fähigkeiten, da muss ich mal ehrlich sein. ;)
2. kann ich dp collection nicht direkt verwenden, da mein object nicht von Tcollectionitem abgeleitet ist.

für mich ergeben sich jetz 2 moeglichkeiten.

1. die werte des objects in ein record verschieben und wie gehabt abspeichern und beim laden den umgekehrten weg gehen.
(umstaendlich, technisch unzureichend, ineffizient);
2. ich erstelle mir für die dpcollection ein hilfsobject als Container, das alle werte der propertys meines objects speichert und laedt

falls keiner einen anderen vorschlag hatt, bitte ich mir dies wenn moeglich mal anhand obiger klasse für die 2 moeglichkeit mit dpcollection zu
erleutern, da alcaeus tut. immernoch auf sich warten laesst und ich die beispiele anhand von anderen projecten schlecht nachvollziehen kann.


Gruß

der Richard

Chewie 26. Jul 2005 17:42

Re: Objecte oder Objectlisten Speichern
 
Wenn du nur Typen wie Integer (ich nenn sie einfach mal "Inline-Typen") in deiner Klasse hast, kannst du deine Klasse allein durch etwas Zeigerakrobatik und Speicherkopieren speichern. Allerdings auch nur dann.

Jens Schumann 26. Jul 2005 20:08

Re: Objecte oder Objectlisten Speichern
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von richard_boderich
...Ich hab eigene Objecte in dehnen sich auch visuelle Controls von delphi befinden, ...

daraus glaube ich zu schließen, dass Du Daten und Komponenten miteinander vermischst. Das ist grundsätzlich sehr ungünstig. Du solltest möglichst nach dem MVC Pattern Verfahren. ModelViewController.Musste mal bei Wikipedia nach schauen.

In der Anlage findest Du ein Beispiel um ein Object mit WriteComponent zu speichern.
Von dem Object werden automatisch alle published properties gespeichert. Mit Defineproperties lassen sich auch private properties speichern.

richard_boderich 27. Jul 2005 13:10

Re: Objecte oder Objectlisten Speichern
 
@ Jens Schuhmann,

danke dir Jens, so langsam seh ich da durch, aber koenntest du mir noch sagen wozu genau diese teilen dienen?
Damit kann ich irgendwie nix anfangen.

Delphi-Quellcode:

initialization
//  Registerclass(TMapObject);
finalization
 // UnRegisterclass(TMapObject);
Gruß Richard

Jens Schumann 28. Jul 2005 09:27

Re: Objecte oder Objectlisten Speichern
 
Zitat:

Zitat von richard_boderich
@ Jens Schuhmann,

danke dir Jens, so langsam seh ich da durch, aber koenntest du mir noch sagen wozu genau diese teilen dienen?
Damit kann ich irgendwie nix anfangen.

Delphi-Quellcode:

initialization
//  Registerclass(TMapObject);
finalization
 // UnRegisterclass(TMapObject);
Gruß Richard

Schau mal unter RegisterClass in die OH. Hinweis-> WriteComponent nutzt das Streamingsystem.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:02 Uhr.
Seite 2 von 2     12   

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