![]() |
Problem mit Klasse und Record
Ich habe eine eigene Klasse, die Records verwaltet. Innerhalb der Klasse werden diese TData genannt und in einer dritten Unit deklariere ich den Record TData, sodass ich beliebige Dinge damit verwalten kann. Nun möchte ich in meinem Programm zwei solcher Listen benutzen, wobei jede einen anderen Record-Typen verwaltet. Ich kann also nicht zwei Instanzen dieser Klasse erzeugen, da ja sonst jede den gleichen Record-Typen benutzen würde.
Eine Möglichkeit wäre, aus der einen Klasse zwei zu machen und dann den Klassen-,Unit- und Recordnamen zu ändern und einen zweiten Record-Typen zu deklarieren, jedoch umständlich. Gibt es keine bessere Möglichkeit? |
Re: Problem mit Klasse und Record
Wenn es unbedingt ein Record sein muß und nicht eine Klasse müßtest Du mit Varianten Teilen in deinem Record arbeiten.
Ob das aber Übersichtlicher wird ... Ich empfehle dir hier mit Klassen zu arbeiten wobei du eine Basisklasse hast und 2 ableitungen für deine 2 Verwaltungslisten. |
Re: Problem mit Klasse und Record
Zitat:
PS: Warum komm ich beim Klick auf Antworten immer zu Startseite? :gruebel: |
Re: Problem mit Klasse und Record
Zitat:
Die Ableitungen enthalten dann alles, was speziell zu einem "Record" gehört; die Elemente der Basisklasse werden teils direkt verwendet, teils überschrieben. Zitat:
Ich hoffe, ich konnte etwas helfen. Jürgen |
Re: Problem mit Klasse und Record
Zitat:
|
Re: Problem mit Klasse und Record
Zitat:
Wenn sich die Struktur der Records unterscheidet, musst Du verschiedene Klassen deklarieren. Wenn sich die Arbeiten wesentlich unterscheiden, die Du mit verschiedenen Records erledigen willst, kannst Du verschiedene Klassen deklarieren. (Im Sinne der OOP könnten/sollten auch solche Aufgaben als Methoden in die Klassen verlagert werden - jedenfalls soweit es von der Arbeit, der Bedeutung und Wiederverwendbarkeit der Klasse und dem Gesamtzusammenhang sinnvoll ist.) Ich hoffe, dass jetzt klarer ist, was ich meine. Jürgen |
Re: Problem mit Klasse und Record
Zitat:
Zitat:
Zitat:
|
Re: Problem mit Klasse und Record
Zitat:
1. Wenn sie vollständig identisch sind, kannst Du mit einer Klasse arbeiten; andernfalls müssten es verschiedene Klassen sein. 2. Die Listen können ggf. "analog" aufgebaut werden: TListe1 als Liste von TData und TListe2 als Liste von TData2. Schau dazu doch einmal in der Delphi-Hilfe unter dem Stichwort "Mit Listen arbeiten"; vielleicht findest Du dort die richtige Anregung. Jürgen |
Re: Problem mit Klasse und Record
Danke für die bisherigen Antworten, aber das hat mich nicht wirklich weitergebracht, weil mein Problem wohl zu abstrakt ist. :(
Noch ein Versuch: Also die Klasse ist eine verkettete Liste, die auf Zeigern basiert und einen Record-typen (TData) verwaltet. Ich würde gerne, dass man dem Constructor als Parameter den Namen des Record-Tyen übergeben könnte. Beispielsweise so:
Delphi-Quellcode:
Wie müsste dann die Deklaration des Constructors ausehen?
type
TData = record i: integer; s: string; end; TData2 = record b: TBitmap; name: string; end; var List1, List2: TLinkedList; //die Klasse heißt TLinkedList List1 := TLinkedList.Create(TData); List2 := TLinkedList.Create(TData2); |
Re: Problem mit Klasse und Record
Warum nutzt du nicht TObjectList, um Objekte abzulegen... Statt der Records dafür einfach die Daten in Objekten speichern:
Delphi-Quellcode:
Mit TObjectList kannst Du leicht Objekte hinzufügen, löschen usw.
type
TData = class public i: integer; s: string; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:32 Uhr. |
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 by Thomas Breitkreuz