AGB  ·  Datenschutz  ·  Impressum  







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

TObjectList<> - Frage

Ein Thema von Benmik · begonnen am 15. Apr 2017 · letzter Beitrag vom 16. Apr 2017
Antwort Antwort
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

AW: TObjectList<> - Frage

  Alt 16. Apr 2017, 15:28
Ich glaube du hast da irgendwo noch einen Logikfehler. Sollte es nicht eher so sein:
Delphi-Quellcode:
type
  TListe<T: TBasis> = class(TObjectList<T>)
  public
    procedure SortiereVar1(Wert:integer)
  end;
Dann hast du nämlich keinerlei Probleme später bei den konkreten Instanzen folgendes zu machen:
Delphi-Quellcode:
var
  List1: TListe<TErbe>;
  List2: TListe<TNochEinErbe>;
  List3: TListe<TBasis>
Besonders, da du ja sagst, dass du in TListe eh nur Felder aus TBasis verwendest. Dies ist durch das Constraint sehr komfortabel möglich.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
575 Beiträge
 
Delphi 12 Athens
 
#2

AW: TObjectList<> - Frage

  Alt 16. Apr 2017, 16:24
Ja, irgendwie kann ich mich nicht richtig verständlich machen.
Also vielleicht nochmal. Ich habe folgende Situation:
Delphi-Quellcode:
type
  TTyp = class(TObject)
    Var1 : integer;
    Var2 : string;
    Var3 : Boolean;
    Var4 : TBitmap;
    Var5..Var20
  end;

type
  TTyp2 = class(TBasis)
    Var1 : integer;
    Var2 : string;
    Var5 : integer;
    Var6 : string;
  end;

type
TListe = class(TObjectList<TTyp1>)
public
  procedure SortiereVar1(Wert:integer)
  procedure SortiereVar2(Wert:string
end;
Ich brauche nun für eine bestimmte Aufgabe Var1 und Var2 und die dazugehörigen Prozeduren der TObjectlist, aber zusätzlich noch Var5 und Var6. Var5..20 brauche ich nicht. Das alles ist nun in Typ2 realisiert.
Zurzeit ist Typ2 eine abgeleitete Klasse von Typ1. Damit stehen mir die neuen Felder und die gewünschten Prozeduren der TObjectList zur Verfügung, aber ich schleppe Var5..Var20 mit und muss immer den Typecast  Erbe := TErbe(Liste[0]) machen. Wie gesagt, es funktioniert alles, aber ich glaube, dass das besser geht. Die Syntax von  TListe<T: TBasis> = class(TObjectList<T>) kannte ich nicht und kann nur mutmaßen, was dahinter steht.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#3

AW: TObjectList<> - Frage

  Alt 16. Apr 2017, 16:53
Irgendwie sieht Dein Klassenmodell komisch aus. Sind die Variablen bzw. Felder wirklich in den Ableitungen redeklariert? Wenn ja, wieso? Wenn Deine Objektliste nur auf Felder und Methoden zugreift, die bereits in der Basisklasse deklariert wurden, ist der Typecast unnötig.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
575 Beiträge
 
Delphi 12 Athens
 
#4

AW: TObjectList<> - Frage

  Alt 16. Apr 2017, 17:09
Nein, nein, die Var1 und Var2 wurden bei Typ2 nur zur Verdeutlichung aufgeführt, dass eine Schnittmenge zum Typ1 besteht; in der wirklichen Deklaration fehlen sie natürlich (siehe auch meine Frage und die Antwort von Zacherl), da sie ja schon in der Vorfahr-Klasse Typ1 enthalten sind.
Dass meine Konstruktion nicht optimal ist, will ich gern glauben.
Im Moment sieht es so aus:type Typ1<TObject> type Typ2 = class(Typ1) type Liste = TObjectlist<Typ1> .
Ohne Typecast geht es damit nicht, weil der Compiler meckert, die Liste wär vom Typ1 und die Variable vom Typ2.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#5

AW: TObjectList<> - Frage

  Alt 16. Apr 2017, 17:15
Welche Variable denn?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
793 Beiträge
 
#6

AW: TObjectList<> - Frage

  Alt 16. Apr 2017, 17:24
Sollen in "Liste" Objektinstanzen von Typ1 und Typ2 gespeichert werden oder genügt es dir eine Liste1 vom Typ1 und eine Liste2 vom Typ2 zu haben?
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
575 Beiträge
 
Delphi 12 Athens
 
#7

AW: TObjectList<> - Frage

  Alt 16. Apr 2017, 17:40
@DeddyH:
Delphi-Quellcode:
var Typ2:TTyp2;
begin
  Typ2 := Liste[0];
end;
Compiler: "E2010: Inkompatible Typen TTyp1 und TTyp2". Eigentlich klar, denn die Liste ist ja als  TObjectlist<Typ1> deklariert

@Olli73: Naja, in Typ1 sind Felder, die auch Typ2 braucht, und die Objektliste für diese Felder Funktionen und Prozeduren bereitstellt, die auch Typ2 braucht.
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:18 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-2025 by Thomas Breitkreuz