Einzelnen Beitrag anzeigen

Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Komponente auf Frame ansprechen

  Alt 2. Mär 2008, 23:20
Zitat von webcss:
Zitat von mkinzler:
Oder besser einen Softcast:
(fr[0].FindComponent('Label1') as TLabel).Caption := 'hi';
Wo ist da eigentlich der Unterschied?
Der direkte Cast schlägt niemals fehl, auch dann nicht, wenn die Typen eigentlich nicht kompatibel sind. Mit dem Softcast bekommt man dagegen im schlechtesten Fall einen Laufzeitfehler.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Caption := IntToStr(TStrings(Button1).IndexOf('Not a Stringlist'));
end;
-> Compiler beschwert sich nicht, Caption wird (zufällig!) auf "0" gesetzt. Da kommt nicht mal eine Exception

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Caption := IntToStr((Button1 as TStrings).IndexOf('Not a Stringlist'));
end;
-> Compiler bemerkt den Fehler und bricht mit der Meldung "Inkompatible Typen" ab.
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat