小心,Delphi函數的返回值你必須管!


這兩天遇到問題,我們的FMX項目,其中一個功能在windows上運行正常,在Android上不正常。

查到最后,竟然是同事沒有處理一個函數的返回值造成的。

function Test(aName:string):TObject;
var
  o:TObject;
begin
  ...
  if aName='123' then
  begin
     o:=TObject.Create;
     result:=o;
  end;
end;

類似上面的代碼,當aName<>123時,在windows上,返回nil,而在android上,則返回非nil下面是調用代碼:

...
if Test('123')=nil then
begin
   ...
end;

最后,修正如下:

function Test(aName:string):TObject;
var
  o:TObject;
begin
  result:=nil;//修正.
  ...
  if aName='123' then
  begin
     o:=TObject.Create;
     result:=o;
  end;
end;

印象中寫過有大牛寫過,必須養成處理函數默認返回值的習慣。這回被現實上了一課!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM