Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#12

AW: Kann ein Objekt seinen Namen ausgeben?

  Alt 23. Mär 2014, 17:14
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;

Geändert von Popov (23. Mär 2014 um 17:31 Uhr)
  Mit Zitat antworten Zitat