AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Verschiedene TObject-Typen in TObjectList

Ein Thema von Yheeky · begonnen am 17. Jul 2008 · letzter Beitrag vom 17. Jul 2008
Antwort Antwort
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#1

Verschiedene TObject-Typen in TObjectList

  Alt 17. Jul 2008, 13:09
Hi,

ich würde gerne folgende Situation mit TObjectList und TObject realisieren.
Ich habe ein Objekt Auto und Fahrrad:

Delphi-Quellcode:
type
  TAuto = class(TObject)
  Marke,
  Modell : String;
  AnzahlTueren : Integer;
end;

type
  TFahrrad = class(TObject)
  Marke,
  Modell : String;
  Gaenge : Integer;
end;
Ich hätte jetzt gerne eine Sammlung mit den Objekten. Wie mache ich das, wenn ich mich bei der Sammlung nicht auf einen Typen festlegen möchte?
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Verschiedene TObject-Typen in TObjectList

  Alt 17. Jul 2008, 13:12
Delphi-Quellcode:
uses contnrs;

{ ... }

var ol: TObjectList;
begin
  ol := TObjectList.create();

  //hinzufügen:
  ol.add(auto1);
  ol.add(fahhrad1);
  ol.add(auto2);

  //und wieder bekommen:
  case ol[0].ClassType of
    TAuto: showmessage('es ist ein auto');
    TFahrrad: showmessage('es ist ein fahrrad');
  end;
end;
Grüße,
Steffen
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#3

Re: Verschiedene TObject-Typen in TObjectList

  Alt 17. Jul 2008, 13:27
Zitat von Aenogym:
Delphi-Quellcode:
uses contnrs;

{ ... }

var ol: TObjectList;
begin
  ol := TObjectList.create();

  //hinzufügen:
  ol.add(auto1);
  ol.add(fahhrad1);
  ol.add(auto2);

  //und wieder bekommen:
  case ol[0].ClassType of
    TAuto: showmessage('es ist ein auto');
    TFahrrad: showmessage('es ist ein fahrrad');
  end;
end;
Grüße,
Steffen
Super, so einfach geht das?! Danke!

Die Zeile case ol[0].ClassType of funktioniert aber so nicht..."Ordinaltyp erforderlich" ist die Meldung. Mit IF funktioniert´s aber
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#4

Re: Verschiedene TObject-Typen in TObjectList

  Alt 17. Jul 2008, 13:34
Was bei deinem Beispiel nicht funktionieren würde wären zugriffe auf die Eigenschaften Marke und Modell, ohne dabei den Klassentyp zu prüfen. Hier kann man eine gemeinsame Oberklasse extrahieren, z.Bsp. "Fahrzeug"

Delphi-Quellcode:
type

  TFahrzeug = class
  public
    Marke,
    Modell : String;
  end;

  TAuto = class(TFahrzeug)
  public
    AnzahlTueren : Integer;
  end;

  TFahrrad = class(TFahrzeug)
  public
    Gaenge : Integer;
  end;
Dann geht auch sowas:

  ShowMessage(ol[0].Marke + ' ' + ol[0].Modell); [edit] geht natürlich so nur, wenn ol eine spezielle Objektliste ist. Sonst muss man dabei zumindest auf TFahrzeug casten. [/edit]
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Verschiedene TObject-Typen in TObjectList

  Alt 17. Jul 2008, 13:38
Zitat von Yheeky:
Die Zeile case ol[0].ClassType of funktioniert aber so nicht..."Ordinaltyp erforderlich" ist die Meldung. Mit IF funktioniert´s aber
Sorry, das stimmt natürlich.

Zitat von tomsel:
Was bei deinem Beispiel nicht funktionieren würde wären zugriffe auf die Eigenschaften Marke und Modell, ohne dabei den Klassentyp zu prüfen. Hier kann man eine gemeinsame Oberklasse extrahieren, z.Bsp. "Fahrzeug"
Wenn man erstmal weiß, welcher Typ sich hinter dem Objekt befindet, könnte man auch with (ol[0] as TAuto) do benutzen. Zumindest hätte ich es so gemacht
edit: Aber das Einführen der Oberklasse ist natürlich sinnvoll und besserer Stil.

Steffen
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#6

Re: Verschiedene TObject-Typen in TObjectList

  Alt 17. Jul 2008, 13:45
Zitat von Aenogym:
Aber das Einführen der Oberklasse ist natürlich sinnvoll und besserer Stil.
So hab ich´s nun auch gemacht - danke!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf