kam dann daher, dass ich der Meinung war, dass die Objekt-Variable eigentlich ein Zeiger ist.
Das ist es ja auch. Du hast dich vielleicht etwas kompliziert ausgedrückt, denn eigentlich war ich von anfang an dabei dir zu sagen, dass bei
var a: TObject;
a eigentlich nur ein Integerwert ist. Siehe:
Delphi-Quellcode:
var
a: TObject;
begin
a := TObject.Create;
ShowMessage(IntToStr(Integer(a)));
a.Free;
end;
Deshalb klappt das auch was Uwe Raabe geschieben hat:
Delphi-Quellcode:
var
a: TObject;
b: TObject;
begin
a := TObject.Create;
b := a;
end;
a und b zeigen auf das gleiche Objekt, weil a nur eine Adresse ist und b die Adresse kopiert hat. Die Instanz wurde erstellt und die Adresse a zugewiesen. Aber keiner verbietet es die an b weiter zu geben.
EDIT:
Deshalb klappt auch das:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
Btn: TButton;
Btn2: TButton;
begin
if Sender is TButton then
begin
Btn := Sender as TButton;
//oder
//Btn := TButton(Sender);
ShowMessage(Btn.ClassName);
Btn2 := Btn;
Btn2.Caption := Btn2.ClassName;
end;
end;
EDIT2:
Um das ganze noch lustiger zu machen:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
Btn: TButton;
Int: Integer;
begin
if Sender is TButton then
begin
Btn := Sender as TButton;
Int := Integer(Btn);
ShowMessage('Wert von Int: ' + IntToStr(Int) + '; Name von Button: ' + TButton(Int).Name);
end;
end;