Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.1k views
in Technique[技术] by (71.8m points)

delphi - Best way to check if a Variable is nil?

A common condition that all programs should do is to check if variables are assigned or not.

Take the below statements:

(1)

if Assigned(Ptr) then
begin
  // do something
end;

(2)

if Ptr <> nil then
begin
  // do something
end;

What is the difference between Assigned(Ptr) and Ptr <> nil?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

It's usually the same... except when you check a function...

function mfi: TObject;
begin
  Result := nil;
end;

procedure TForm1.btn1Click(Sender: TObject);
type
  TMyFunction = function: TObject of object;
var
  f: TMyFunction;
begin
  f := mfi;

  if Assigned(f) then
  begin
    ShowMessage('yes'); // TRUE
  end
  else
  begin
    ShowMessage('no');
  end;

  if f <> nil then
  begin
    ShowMessage('yes');
  end
  else
  begin
    ShowMessage('no');  // FALSE
  end;
end;

With the second syntax, it will check the result of the function, not the function itself...


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...