![]() |
Wie Klassen (keine Instanz!) als Variable übergegben?
Hallo,
wie kann ich an eine Funktion eine Klasse übergeben? Ich möchte keine Instanz einer Klasse übergeben, sondern die Klasse selbst um in einer Liste zu suche, ob diese Liste ein Objekt einer bestimmten Klasse enthält (mit dem is-Operator):
Delphi-Quellcode:
Aufruf:
TOberklasse = class(TOject)
... TKlasseX = class(TOberklasse) ... TKlasseY = class(TOberklasse) ... function TFoo.IndexOfClass(AClass: XXXXX <-- Was kommt hier hin?): Integer; var i: Integer; begin Result := -1; for i := 0 to Count - 1 do if Items[i] is AClass then begin Result := i; Break; end end; AFoo.IndexOfClass(TKlasseX) oder AFoo.IndexOfClass(TKlasseY) Um es vorwegzunehmen: Wenn an der Stelle XXXX TOberklasse steht, meckert der Compiler, weil er dann ja eine Inszanz einer Klasse haben möchte... |
Re: Wie Klassen (keine Instanz!) als Variable übergegben?
Hi,
:arrow: TClass Gruß Neutral General |
Re: Wie Klassen (keine Instanz!) als Variable übergegben?
Delphi-Quellcode:
Das sollte gehen! Wie heißt der genaue Fehler?
function TFoo.IndexOfClass(AClass: TOberklasse): Integer;
Delphi-Quellcode:
unit Unit2;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TParent = class end; TChild = class(TParent) end; TTest = class(TChild) end; TForm2 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } procedure test(AClass: TParent); end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.Button1Click(Sender: TObject); var ltest: TTest; begin test(ltest); end; procedure TForm2.test(AClass: TParent); begin ShowMessage('-.-'); end; end. |
Re: Wie Klassen (keine Instanz!) als Variable übergegben?
Danke, TClass klappt. Damit kann ich im Prinzip jedoch jede Klasse übergeben. Kann ich es nicht irgendwie so einschränken, dass ich nur Unterklassen von meiner TOberklasse übergeben kann?
|
Re: Wie Klassen (keine Instanz!) als Variable übergegben?
Hallo freak4fun,
Du hast wahrscheinlich die Frage nicht verstanden. Also nochmals zur verdeutlichung, Hinweise zu Deinem Code: Zitat:
|
Re: Wie Klassen (keine Instanz!) als Variable übergegben?
Schau mal in die Hilfe unter
![]()
Delphi-Quellcode:
type TOberklasseClass = class of TOberklasse;
function TFoo.IndexOfClass(AClass: TOberklasseClass): Integer; |
Re: Wie Klassen (keine Instanz!) als Variable übergegben?
Zitat:
Delphi-Quellcode:
Edit: Sry da kam kein roter Kasten :oops:
type
TOberklasseClass = class of TOberklasse; function KeineAhnung(AClass: TOberklasseClass): Integer; Gruß Neutral General |
Re: Wie Klassen (keine Instanz!) als Variable übergegben?
Achso, ja hast recht. Sorry! :oops:
|
Re: Wie Klassen (keine Instanz!) als Variable übergegben?
Danke Apollonius + Neutral General. Genau das habe ich gesucht!
|
Re: Wie Klassen (keine Instanz!) als Variable übergegben?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 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