Item.SomeProperty türünüze bağlıdır. Varyant ise veya öncesinde değerlendirilecek bir varyant varsa, değerlendirilecek ve AV'ye neden olacaktır.
Düzenleme: SomeProperty Varyant türü ise,
if Assigned(Item) and StrToBool(Item.SomeProperty) then
O zamanlar boolean için dize değişkeni dönüştürmek için biraz zaman harcamak yok kullanabilirsiniz ancak kira azından yapabilirsiniz: geçici çözümü söz Forget Doğru/yanlış/varolmayan tüm vakaları tatmin eder.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Generics.Collections;
type
TTestObj = class
public
V : Variant;
I : Integer;
end;
TForm4 = class(TForm)
btn1: TButton;
btn2: TButton;
btn3: TButton;
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure btn3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
TOV : TTestObj;
end;
var
Form4: TForm4;
implementation
{$R *.dfm}
procedure TForm4.btn1Click(Sender: TObject);
begin
if Assigned(TOV) and (TOV.I = 10) then
ShowMessage('You will never see this though no AV!');
end;
procedure TForm4.btn2Click(Sender: TObject);
begin
if Assigned(TOV) and StrToBool(TOV.V) then
ShowMessage('You will not see AV with StrToBool!');
if Assigned(TOV) and TOV.V then
ShowMessage('You will never see this but AVed!');
end;
procedure TForm4.btn3Click(Sender: TObject);
var
V : Variant;
begin
V := False;
if Assigned(TOV) and V and (TOV.I = 10) then
ShowMessage('You will see AV!');
end;
end.
've' bir operatör değil, bir ifadedir: Eğer görmek için Aşağıda
bir test durumdur. Örneğiniz, boş belirteç istisnası '$ IFOPT B +' – OnTheFly@ user539484, zayıf terminolojim için üzgünüm :) '' ve 'operatörünün ifadesi olduğunu düşündüm. Onu tamir edeceğim. Yorumunuzda saklanan net cevap için teşekkürler. –
niçin 'atanmışsa (öğe) o zaman öğ[email protected] ise item.someproperty ' –