Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Suche Hilfen zur dpcollection (https://www.delphipraxis.net/51662-suche-hilfen-zur-dpcollection.html)

richard_boderich 16. Aug 2005 18:20


Suche Hilfen zur dpcollection
 
moin leute,

ich bräuchte mal ein paar hilfen zur dpcollection. ich habe mir viele beitraege hier im
forum angeschaut, leider haben die mir nicht geholfen. ich habe eingentlich nur begriffen
was ich damit machen kann. aber wie es genau funktioniert, wie ich eine collection erstelle, oder
eigene items einfuege und auch spaeter ansprechen kann, habe ich leider nicht nachvollziehen koennen. ich suche also hintergrundmaterial um mich dort einarbeiten zu koennen. hilfreich waere
vielleicht auch kleine beispiele, wie ich ne collection erstelle und eigene items einfuege.
ich hab auch gesehen, das irgentwo mal bitmaps abgespeichert worden sind. ich dachte aber das objecte nicht mit der dpcollection abgespeichert werden koennen, sondern nur published propertys
(integer, string usw. waere toll wenn jemand ein paar dokus dazu hatt.

gruß richard

Robert_G 16. Aug 2005 19:05

Re: Suche Hilfen zur dpcollection
 
Sorry, aber da klingt als hättest du viel überflogen, aber nicht viel _gelesen_.
Du kannst damit alle primitiven Typen speichern (bis auf records, natürlich), die published sind. (Delphi-Referenz durchsuchenDefineProperties für non published properties)
Natürlich kannst du auch alle Objekte abspeichern, die von TPersistent ableiten. (Dürfte eine der Standardpredigten von Jens sein ;) )
Zumindest ein hat er das in dem Beitrag geschrieben, in dem die Images erwähnt wurden. ;)

Kleines, abstraktes Beispiel zur Verwendung:

Delphi-Quellcode:
type
  TSomeEnum = (Test, Eins, Zwei, Drei);

  TSomeItem = class(TCollectionItem)
  ...
  published
    property SomeString : string   read XXX write XXX;
    property SomeBitmap : TBitmap  read XXX write XXX;
    property SomeEnum  : TSomeEnum read XXX write XXX;
  end;
  ...

var
  Collection : TDpCollection;
begin

  Collection := TDpCollection.Create(TSomeItem);

  for i := 1 to 10 do
  with Collection.Add() as TSomeItem do
  begin
    SomeString := IntToStr(i);
    SomeImage := HoleIrgendeinBitmapIrgendwoher(i);
    SomeEnum  := Test;
  end;

  Collection.SaveToFile('xxx.dfm');
Alki hat auch ein Tutorial dafür in Vorbereitung, vielleicht lässt dich ja mal reinkieken... ;)

alcaeus 16. Aug 2005 19:12

Re: Suche Hilfen zur dpcollection
 
Zitat:

Zitat von Robert_G
Alki hat auch ein Tutorial dafür in Vorbereitung, vielleicht lässt dich ja mal reinkieken... ;)

Hab ich, leider hatte er was gegen die Sprache (Englisch) :zwinker:

Nachdem jfheins das Tutorial fuer mich uebersetzt hat (danke :)), duerfte das Basis-Tut bald zur Veroeffentlichung bereit sein :)

Greetz
alcaeus

richard_boderich 16. Aug 2005 22:56

Re: Suche Hilfen zur dpcollection
 
geht das mit der dpcollection auch, wenn ich zum beispiel von einem nachfahren von tpersistent abgeleitet habe (tcontrol) ?
Außerdem gabs da noch eine dpcollectionex unit. die von jfheinz ueberarbeitet wurde, was hatts den damit auf sich?

Fragen zu deinen Beispiel:

1. speichert er da im binaerformat oder im textformat?
2. sagen wir mein object enthaelt ein timage ein tstatictext und ein tedit, werden die von der dp Collection so einfach gespeichert?
3. wenn ich mehrere objecte in das gleiche file speichern will. woran erkenne ich beim laden, wo die daten für das erste object aufhoeren und die fürs zweite anfangen?


Gruß richard

PS: @robert ich befasse mich schon laenger mit dem problem siehe meinen Post zu speichern von objectlisten ;)

jfheins 16. Aug 2005 23:13

Re: Suche Hilfen zur dpcollection
 
Zitat:

Zitat von richard_boderich
geht das mit der dpcollection auch, wenn ich zum beispiel von einem nachfahren von tpersistent abgeleitet habe (tcontrol) ?

Das Speichern geht offensichtlich mit allen Klassen, die TPersistent in ihrer Vererbungshierarchie haben, in der Delphi-Hilfe oben links auf Hirarchie oder einfach: Fast alles. Alle Controls, TStringlist, TBitmap, uvm.

Zitat:

Außerdem gabs da noch eine dpcollectionex unit. die von jfheinzs ueberarbeitet wurde, was hatts den damit auf sich?
Überarbeitete Unit ? Das war ich (leider?) nicht(Ich habe das ganze Collection-Zeug auch grad' erst verstanden ^^), ich hab' nur übersetzt :mrgreen:

Aber es gibt div. Erweiterungen, einfach mal in den dpCollection-Thread schauen ;)

richard_boderich 16. Aug 2005 23:17

Re: Suche Hilfen zur dpcollection
 
@ jfheins,

danke für deine antwort, koenntest du nochmal nach dem post schaun, hatte nochma editiert

THx richard

jfheins 16. Aug 2005 23:25

Re: Suche Hilfen zur dpcollection
 
Du kannst keine beliebige Objekte speichern, sondern nur von TCollectionItem/TPersistent abgeleitete, aber sonst ist es (fast) wie eine ObjectList:

Collection > ObjectList

Items der ObjectList > Collection-Items

Du musst also deine ObjectList etwas umstellen, aber dann könnt's klappen ;)

Robert_G 16. Aug 2005 23:39

Re: Suche Hilfen zur dpcollection
 
Zitat:

Zitat von richard_boderich
Fragen zu deinen Beispiel:

Zitat:

1. speichert er da im binaerformat oder im textformat?
Du bist dir sicher, dass du dich damit länger beschäftigst?
Denn ich hätte irgendwann im "Damit-Beschäftigen-Prozess" mal "Collection." getippt. Und wenn ich das gemacht hätte, wäre mir die Property "Binary sofort ins Auge gesprungen...

Zitat:

2. sagen wir mein object enthaelt ein timage ein tstatictext und ein tedit, werden die von der dp Collection so einfach gespeichert?
Keine Ahnung, ich kam noch nie auf die Idee Controls direkt abzuspeichern. :gruebel:
Es sollte aber gehen, da der Form editor von Delphi, die gleiche Technologie benutzt. ;)
Zitat:

3. wenn ich mehrere objecte in das gleiche file speichern will. woran erkenne ich beim laden, wo die daten für das erste object aufhoeren und die fürs zweite anfangen?
Schonmal in die Datei reingeschaut? Gespeichert als Text ist sie genauso strukturiert wie die dfm eine Delphi Forms. Aber das Schöne ist, dass du dir darum keinen Kopf machen musst.
Du kannst einen CollectionItem eine weitere Collection als property verpassen und so alles Mögliche in _eine_ datei packen und auch in einem Rutsch auslesen.

Zitat:

PS: @robert ich befasse mich schon laenger mit dem problem siehe meinen Post zu speichern von objectlisten ;)
Genau deshalb klinge ich vielleicht etwas enttäuscht.
Du hast bisher weder
  • einfach so eine Collection befüllt, gespeichert und in die Datei geschaut,
  • geschaut, welche Properties sie hat und wie sie sich auswirken
  • sie wieder eingelesen und den eingelesenen Inhalt im Debugger/der Konsole/einem ListView/... gegen die Werte überprüft, die du vor dem Speichern reingeworfen hast
Ich weiß, dass das jetzt unfreundlich klingen kann, aber du scheinst dir einfach keine Mühe zu geben oder dich gar nicht dafür zu interessieren.
Wenn man zu dem Gedanken kommt, kommt zwangsläufig der nächste: "Warum sollte ich das für dich übernehmen?"

richard_boderich 16. Aug 2005 23:54

Re: Suche Hilfen zur dpcollection
 
@robert finde ich nicht fair von dir

also ich hab nach "dpcollection" gesucht. da bekam ich eine seite mit treads (genau 37 treffer), von dehnen hab ich fast alle durchgelesen.

dpcollection

das problem ist das ich vieles einfach
nicht verstehe oder nachvollziehen kann, da ich mir alles delphiwissen autodidaktisch angeeignet habe.und den DP-tread der mir erklaert, was die dpcollection
alles für propertys und methoden hatt , hab ich noch nicht gefunden. ich meine keine beispiele sondern simple funktionserklaerungen wie in der OH.

das du mir keine fertigen eier legen sollst, wuerdest du wissen wenn du dir meine post's anschaust. darum geht es mir ja ich will nicht uebernehmen. ich muss
es verstehen und selber machen. weil sonst seh ich irgendwann durch mein programm gar nicht mehr durch.
finde es ehrlich gesagtein bisschen traurig das du so von mir denkst. und es stimmt das ich noch keine collection selbst erstellt und gespeichert hab , aus einem einfachen grund, ich weis nicht wie. ich habe mich bissher mit dem component streaming system auseinander gesetzt. (twriter) siehe mein post "Objectlisten" von
Jens Schuhmann. hab es aber verworfen, weil es in meinem konkreten anwendungsfall nicht geeignet ist.

gruß richard


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz