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 Problem mit Klasse und Record (https://www.delphipraxis.net/74842-problem-mit-klasse-und-record.html)

Koller 13. Aug 2006 15:12

Re: Problem mit Klasse und Record
 
Zitat:

Zitat von Jelly
Warum nutzt du nicht TObjectList, um Objekte abzulegen... Statt der Records dafür einfach die Daten in Objekten speichern:

Delphi-Quellcode:
type
  TData = class
  public
    i: integer;
    s: string;
  end;
Mit TObjectList kannst Du leicht Objekte hinzufügen, löschen usw.

:bounce2: Das könnte die Lösung sein, dankeschön!. :thumb:

Jürgen Thomas 13. Aug 2006 15:17

Re: Problem mit Klasse und Record
 
Ich schließe mich Jelly an:

Die Records sind wesentlich verschieden, also erstelle zwei verschiedene Klassen, abgeleitet von TObject.
Du brauchst dafür eigentlich nur Konstruktor und Destruktor sowie je zwei Eigenschaften, um auf die Felder zuzugreifen:
Zitat:

Zitat von Jelly
Delphi-Quellcode:
type
  TData = class
  private
    Fi: integer;
    Fs: string;
  public
    constructor Create( i: integer; s: string );
    destructor Destroy;
    procedure Free;
    //  write vereinfacht ohne Set-Prozedur
    property i: integer read Fi write Fi;
    property s: string read Fs write Fs;
  end;

Zitat:

Zitat von Jelly
Mit TObjectList kannst Du leicht Objekte hinzufügen, löschen usw.

Dann brauchst Du nur noch die Listen zu erzeugen und kannst mit den Standardfunktionen der Listen Add, Remove, Insert, Exchange usw. alles nutzen, was für eine verkettete Liste benötigt wird.
Delphi-Quellcode:
var List1, List2: TObjectList;  //  <--  !!!
//
List1 := TObjectList.Create;
List2 := TObjectList.Create;
List1.Add(Instanz von TData);
List2.Add(Instanz von TData2);
Es handelt sich programmtechnisch um gleichartige Listen, weil sie jeweils "nur" Zeiger auf Objekte enthalten. Dass in List1 Objekte vom Typ TData enthalten sind und in List2 solche vom Typ TData2, musst Du Dir als Programmierer selbst merken und entsprechend berücksichtigen:
Delphi-Quellcode:
var d1: TData;
...
d1 := (TData)List1.Items[23];
Aber das sollte doch möglich sein.

Ein solches Verfahren über TObjectList ist mit Sicherheit einfacher und praktikabler, als eigene Listen zu definieren und alle Zugriffe von Records (Add, Remove, Insert, Exchange usw.) selbst zu programmieren.

Jürgen

Jelly 13. Aug 2006 15:34

Re: Problem mit Klasse und Record
 
Du kannst sogar alle Objekte TD1 und TD2 in der gleichen Liste verwalten... Mit dem is Operator kannst du die Einträge deiner Liste auf deinen Klassentypen überprüfen.
Aber 2 Listen sind wohl eher angebracht.


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

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