Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi CollectionItem und ID (https://www.delphipraxis.net/173800-collectionitem-und-id.html)

Hannes Kuhn 17. Mär 2013 12:33

CollectionItem und ID
 
Hallo,

bin gerade auf ein Problem beim Speichern und Laden von Collections gestoßen, die mir
meine ganzen über IDs verknüpften Daten durcheinanderschaufeln.

Beim Laden einer Collection werden scheinbar die IDs der CollectionItems jedesmal neu vergeben.

Lösche ich ein CollectionItem speicher die Collection und lade sie wieder, dann stimmen die
Verknüpfungen aufgrund der neu vergebenen IDs nicht mehr.

Muß ich mir eine eigene ID für alle Items erzeugen oder kann ich das Neuvergeben der IDs
irgendwie unterbinden ?

Danke
Hannes

Sir Rufo 17. Mär 2013 13:19

AW: CollectionItem und ID
 
Die Delphi-Referenz durchsuchenTCollectionItem.ID hat ihre Gültigkeit nur innerhalb der Lebensdauer von Delphi-Referenz durchsuchenTCollection und bezieht sich auch nur auf Delphi-Referenz durchsuchenTCollection und nicht auf irgendetwas Externes.

Einsatzgebiet (z.B. die Spalten in einem Delphi-Referenz durchsuchenTListView)
Auch wenn die Spalten für die Anzeige verschoben werden, kann über die ID der Spalte eine eindeutige Zuordnung gewährleistet werden. (In der Spalte (ID=1) soll der Dateiname angezeigt werden)

Für eine externe ID-Referenz muss man diese Referenz auch selber verwalten (wie und wo auch immer).

stahli 17. Mär 2013 13:55

AW: CollectionItem und ID
 
Was meinst Du denn konkret mit "über ID´s verküpft"?
Und was meinst Du mit speichern (in der DFM oder irgendwie extern)?

In der DFM werden nur die veröffentlichen Eigenschaften der Items abgelegt.
Code:
      object ssGrid1: TssGrid
        Align = alClient
        Height = 567.000000000000000000
        Width = 1024.000000000000000000
        Ctrl.ObjName = '.FriendList'
        Ctrl.Direction = ssfdSlave
        Columns = <
          item
            ColumnType = ctEdit
            HeadText = 'FirstName'
            PropName = 'FirstName'
            Width = 120.000000000000000000
            Visible = True
            Enabled = True
          end
          item
            ColumnType = ctEdit
            HeadText = 'LastName'
            PropName = 'LastName'
            Width = 120.000000000000000000
            Visible = True
            Enabled = True
          end
          item
            ColumnType = ctCheckBox
            HeadText = 'VIP'
            PropName = 'VIP'
            Width = 50.000000000000000000
            Visible = True
            Enabled = True
          end>
      end
Ich gehe davon aus, dass die "Lebensdauer" einer Collection beim Laden aus dem Formular neu beginnt.

Wenn es nicht um das Speichern in einem Formular geht, wäre evtl. der Einsatz einer ObjectList zu überlegen.
Eine Id müsste dann aber auch in den Objekten gespeichert werden.

Hannes Kuhn 17. Mär 2013 14:27

AW: CollectionItem und ID
 
Stahli,

mit dpCollection serialisiere ich alle Anwendungsdaten meines Programms.

Jedes Objekt ist mit einem CollectionItem das für die Serealisierung zuständig ist verbunden.
Die verschiedenen Objekte sind mit der ID des CollectionItems verknüpft.

Die ID ist aber leider nicht in Stein gemeiselt.

Gruß
Hannes


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:16 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