![]() |
Problem mit Klassen / Property / Funktionen
Hallo zusammen,
ich bin gerade dabei ein Programm zu schreiben welchen verschiedene Klassen erhalten soll. Ich komme zur Zeit durcheinander mit Properties und Funktionen. Ich weiß das das unten angegebene Beispiel nicht lauffähig ist, ich hoffe jedoch daraus wird mein Problem ersichtlich. Ich möchte aus einem anderen Formular die Klasse TTest.Status aufrufen, und abhängig vom übergebenen Wert "true" oder "false" erhalten.
Delphi-Quellcode:
Gruß
interface
... TTest=class(TObject) private function GetStatus(ID:pchar):boolean; public property Status:boolean read GetStatus(ID:pchar); end; implementation ... function TTest.GetStatus(ID:pchar): boolean; begin if ID=4711 then result := true; end; Sebastian |
Re: Problem mit Klassen / Property / Funktionen
[edit] Sry, war Blödsinn [/edit]
|
Re: Problem mit Klassen / Property / Funktionen
Wenn du wissen willst, wie du das mit den Parametern in Properties machen sollst:
Delphi-Quellcode:
type
TTest = class(TObject) private // von PChar auf integer geändert function GetStatus(ID: integer): boolean; public // [index] eingefügt und read-Anweisung verändert property Status[index: integer]: boolean read GetStatus; end; |
Re: Problem mit Klassen / Property / Funktionen
Das funktioniert aber nicht mehr wenn ich mehrere Parameter
übergeben möchte?! |
Re: Problem mit Klassen / Property / Funktionen
Delphi-Quellcode:
TTest=class(TObject)
private function GetStatus(const ID:string):boolean; public property Status[const ID:string]:boolean read GetStatus(const ID:string); end; implementation ... function TTest.GetStatus(const ID:string): boolean; begin if ID='4711' then result := true else // bloss nicht das else vergessen result := False; (* // eine kompakte Abfrage für mehrere Strings result := StrIndex(IdLand,['4711','4712', 'Test', 'Delphi']) <> -1; *) end; |
Re: Problem mit Klassen / Property / Funktionen
Mehrere Parameter sind auch kein Problem:
Delphi-Quellcode:
Was du in den Properties aber nicht machen kannst: du kannst keine overloaded Parameter erstellen.
type
TTest = class(TObject) private // von PChar auf integer geändert function GetStatus(ID, Number, Test, Super: integer): boolean; public // [index] eingefügt und read-Anweisung verändert property Status[ID, Number, Test, Super: integer]: boolean read GetStatus; end; |
Re: Problem mit Klassen / Property / Funktionen
Vielen Dank!
overloaded Parameter sagen mir jedoch noch nichts. Overload kenne ich nur, wenn ich in einer abgeleiteten Klasse eine Methode überschreiben will. |
Re: Problem mit Klassen / Property / Funktionen
Das wäre override. Overload bedeutet eine Methode mit dem selben Namen und anderer Signatur
|
Re: Problem mit Klassen / Property / Funktionen
Ich versuchs dir anhand eines Beispiels zu erklären:
Bei procedures und functions gibt es eine Anweisung overload. Mit dieser Anweisung kannst du den selben Funktionsnamen mit unterschiedlichen Parametern mehrmals verwenden. Beispiel:
Delphi-Quellcode:
Wenn du jetzt die Funktion GetItem aufrufst, entscheidet der Compiler anhand der Parameter, welche Funktion ausgeführt wird:
function GetItem(index: integer): TItem; overload;
function GetItem(Name: string): TItem; overload; function GetItem(Child: TItem): TItem; overload; GetItem(1) -> die erste Funktion wird ausgeführt GetItem('abc') -> die zweite Funktion wird ausgeführt GetItem(aItem) -> die dritte Funktion wird ausgeführt (aItem ist vom Typ TItem) Was jetzt aber nicht geht:
Delphi-Quellcode:
type
TTest = class private function GetStatusI(id: integer): boolean; function GetStatusS(s: string): boolean; public // das funktioniert nicht!!!!! property GetStatus[id: integer]: boolean read GetStatusI; overload; property GetStatus[s: string] : boolean read GetStatusS; overload; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 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