AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Klasse und Record

Ein Thema von Koller · begonnen am 9. Aug 2006 · letzter Beitrag vom 13. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2      
Koller

Registriert seit: 22. Mär 2005
59 Beiträge
 
#1

Problem mit Klasse und Record

  Alt 9. Aug 2006, 15:04
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?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Problem mit Klasse und Record

  Alt 9. Aug 2006, 15:09
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Koller

Registriert seit: 22. Mär 2005
59 Beiträge
 
#3

Re: Problem mit Klasse und Record

  Alt 9. Aug 2006, 15:14
Zitat von Bernhard Geyer:
Ich empfehle dir hier mit Klassen zu arbeiten wobei du eine Basisklasse hast und 2 ableitungen für deine 2 Verwaltungslisten.
Welche Funktion soll denn die Basisklasse haben und welche die 2 Ableitungen? An so etwas habe ich auch schon gedacht, aber bin an dieser Frage und damit auch an der Umsetzung gescheitert. Die Klasse muss man sich so wie eine StringList bloß mit Records vorstellen.
PS: Warum komm ich beim Klick auf Antworten immer zu Startseite?
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#4

Re: Problem mit Klasse und Record

  Alt 9. Aug 2006, 15:27
Zitat von Koller:
Zitat von Bernhard Geyer:
Ich empfehle dir hier mit Klassen zu arbeiten wobei du eine Basisklasse hast und 2 ableitungen für deine 2 Verwaltungslisten.
Welche Funktion soll denn die Basisklasse haben und welche die 2 Ableitungen? An so etwas habe ich auch schon gedacht, aber bin an dieser Frage und damit auch an der Umsetzung gescheitert. Die Klasse muss man sich so wie eine StringList bloß mit Records vorstellen.
Die Basisklasse soll alles das enthalten, was zu jedem dieser "Records" gehört; z.B. Erzeugen einer Liste, Einfügen und Entfernen von Elementen usw. Du könntest Dich z.B. an TCollection orientieren (siehe Quelltext in {Delphi}\source\Win32\rtl\common\Classes.pas).

Die Ableitungen enthalten dann alles, was speziell zu einem "Record" gehört; die Elemente der Basisklasse werden teils direkt verwendet, teils überschrieben.
Zitat von Koller:
PS: Warum komm ich beim Klick auf Antworten immer zu Startseite? :gruebel:
Genau kann ich das auch nicht erklären, ich habe mich am Anfang auch gewundert. Nach dem Absenden eines Beitrags gibt es eine Auswahl, wo man weitermachen will; man muss sich nur schnell genug entscheiden.

Ich hoffe, ich konnte etwas helfen. Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Koller

Registriert seit: 22. Mär 2005
59 Beiträge
 
#5

Re: Problem mit Klasse und Record

  Alt 9. Aug 2006, 21:50
Zitat von Jürgen Thomas:
Die Ableitungen enthalten dann alles, was speziell zu einem "Record" gehört; die Elemente der Basisklasse werden teils direkt verwendet, teils überschrieben.
Die Records haben ja nichts 'spezielles'. Sie haben nur anderen Inhalt und andere Namen. Innerhalb der Klasse ist der Inhalt ja egal,darum weiß ich nicht, wenn ich Vererbung benutze, an die Tochterklassen 'spezielles' einbauen soll.
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#6

Re: Problem mit Klasse und Record

  Alt 10. Aug 2006, 09:12
Zitat von Koller:
Die Records haben ja nichts 'spezielles'. Sie haben nur anderen Inhalt und andere Namen. Innerhalb der Klasse ist der Inhalt ja egal,darum weiß ich nicht, wenn ich Vererbung benutze, an die Tochterklassen 'spezielles' einbauen soll. :(
Wenn die Struktur der Records identisch ist - also hinsichtlich Name, Typ und Größe der 'Felder' -, kannst Du natürlich statt dessen mit einer einzigen Klasse arbeiten. Die verschiedenen Listen sind dann mehrere Instanzen der gleichen Klasse.

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
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Koller

Registriert seit: 22. Mär 2005
59 Beiträge
 
#7

Re: Problem mit Klasse und Record

  Alt 10. Aug 2006, 13:32
Zitat von Jürgen Thomas:
Wenn die Struktur der Records identisch ist - also hinsichtlich Name, Typ und Größe der 'Felder' -, kannst Du natürlich statt dessen mit einer einzigen Klasse arbeiten. Die verschiedenen Listen sind dann mehrere Instanzen der gleichen Klasse.
Klar.
Zitat von Jürgen Thomas:
Wenn sich die Struktur der Records unterscheidet, musst Du verschiedene Klassen deklarieren.
Klar.
Zitat von Jürgen Thomas:
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.)
Im Grunde unterscheiden sich beide Listen nicht. Sie verwalten nur einen anderen Record-Typen, d.h. ich müsste zwei Klassen haben, die im Prinzip identisch sind, nur statt z.B. TData eben TData2 verwalten.
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#8

Re: Problem mit Klasse und Record

  Alt 10. Aug 2006, 15:35
Zitat von Koller:
Im Grunde unterscheiden sich beide Listen nicht. Sie verwalten nur einen anderen Record-Typen, d.h. ich müsste zwei Klassen haben, die im Prinzip identisch sind, nur statt z.B. TData eben TData2 verwalten.
Genau das ist der Punkt: Sind TData und TData2 "im Prinzip identisch" oder vollständig identisch?

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
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Koller

Registriert seit: 22. Mär 2005
59 Beiträge
 
#9

Re: Problem mit Klasse und Record

  Alt 13. Aug 2006, 15:27
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:
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);
Wie müsste dann die Deklaration des Constructors ausehen?
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Problem mit Klasse und Record

  Alt 13. Aug 2006, 15:33
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:35 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