這兩天遇到問題,我們的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;
印象中寫過有大牛寫過,必須養成處理函數默認返回值的習慣。這回被現實上了一課!