AW: Merkwürdiger Effekt bei TLabel
Warum soll es eine geben? Nur weil es nil ist, bedeutet es nicht, dass man keinen Wert zuweisen kann.
Delphi-Quellcode:
Lbl := TLabel(Nil);
// Lbl := Nil funktioniert auch Lbl.Caption:='wuppdi'; Showmessage(Lbl.Caption); Lbl := Label1; Showmessage(Lbl.Caption); |
AW: Merkwürdiger Effekt bei TLabel
Das hier gibt erwartungsgemäß eine Exception:
Delphi-Quellcode:
Definiere ich die Variable myClass aber als TLabel, gibt es keine. "Zaubert" die VCL da was, oder ist das eine versteckte Einstellung, die ich noch nicht kenne?
TMyClass = class
caption: String; end; // var myClass: TMyClass; begin myClass := Nil; myClass.caption := 'foo'; end; (Das ist ja nicht wirklich OT. Willie hatte gewissermaßen "toten" Code im Projekt, der eigentlich Fehler verursachen sollte, der aber einfach "nichts" tat und erst "aktiv" wurde, als ein passendes Label auf der Form war.) |
AW: Merkwürdiger Effekt bei TLabel
Zitat:
Zitat:
|
AW: Merkwürdiger Effekt bei TLabel
Zitat:
|
AW: Merkwürdiger Effekt bei TLabel
Zitat:
Zitat:
|
AW: Merkwürdiger Effekt bei TLabel
Zitat:
Delphi-Quellcode:
(Wobei ich jetzt gerade nicht sicher bin, ob "as" nicht auch schon implizit auf nil prüft, bzw. es als ungültige TEdit Instanz ablehnt. Steht bestimmt in der Hilfe dazu :) ) Und dann auch die Gefahren abgrenzen, die z.B. bei einem harten Cast entstehen können. Mag für viele offensichtlich sein, aber den meisten, die die Hilfe oft beanspruchen müssen gerade vielleicht nicht.
var
edit: TEdit; begin edit := FindComponent('Edit1') as TEdit; if Assigned(edit) then begin // your code here end; end; |
AW: Merkwürdiger Effekt bei TLabel
Zitat:
Ein
Delphi-Quellcode:
ist immer noch
TObject(nil) as TEdit
Delphi-Quellcode:
. In der Hilfe steht explizit:
nil
Zitat:
|
AW: Merkwürdiger Effekt bei TLabel
as knallt, wenn es ein falscher/inkompatibler Typ ist,
und nil ist kein Typ, also ein gültiger Wert. is prüft dagegen, ob es ein kompatibler Typ ist, also nil oder was Anderes ergeben False. Bei nil reagieren die beiden Funktionen also unterschiedlich. |
AW: Merkwürdiger Effekt bei TLabel
Zitat:
Willie. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz