Hallo,
bei der Verwendung von Klassenvariablen und -konstanten muß beachtet werden, daß sich
alle Instanzen
eine Variable bzw. Konstante teilen:
Delphi-Quellcode:
type
TTest = class (TObject)
private class var
FMyProp: Integer;
public
class property MyProp: Integer read FMyProp write FMyProp;
end;
var
T1, T2 : TTest;
begin
T1.MyProp := 42;
T2.MyProp := 0;
ShowMessage (IntToStr(T1.MyProp)); // Ausgabe: '0'!
end;
Das von BomberBB gewünschte Verhalten läßt sich (in allen Delphi-Versionen) mit Objekttypen realisieren, die auch eine Vererbung ermöglichen:
Delphi-Quellcode:
type
TString = object
private
FValue : string;
public
procedure ConvertFromInt (aNumber: Integer);
property Value: string read FValue write FValue;
end;
procedure TString.ConvertFromInt (aNumber: Integer);
begin
Value := IntToStr(aNumber);
end;
var
MyString : TString;
begin
MyString.ConvertFromInt(42);
ShowMessage (MyString.Value);
end;
Eine Warnung sei aber angebracht:
Zitat von
Delphi-Hilfe:
Objekttypen werden nur aus Gründen der Abwärtskompatibilität unterstützt. Ihre Verwendung unter
Win32 ist nicht zu empfehlen. Vom Delphi .NET-Compiler werden sie nicht akzeptiert.
Man sollte also nicht darauf vertrauen, daß auch zukünftige Delphi-Versionen die Objekttypen unterstützen. Das
BDS bietet einen Ersatz in Form der erweiterten Record-Typen (leider ohne Vererbung).
Gruß Hawkeye