我正在使用RAD Studio XE-5創建Android應用程序,但最近偶然發現了一個令人費解的錯誤。 TStringList.AddObject引發以下異常:TStringList.AddObject不適用於Android(德爾福)
Project Project3.apk raised exception class Segmentation fault (11).
我的代碼是這樣的
procedure TMainForm.FormCreate(Sender: TObject);
var
list: TStrings;
begin
list := TStringList.Create;
list.AddObject('Joe', TObject(1)); // This is where exception is raised
list.AddObject('Hans', TObject(2));
end;
此代碼運行在32位Windows目標完全沒有問題,但提出了運行時的上述異常(在調試模式)在我的Nexus 7(當我不使用TStringList.AddObject時運行正常)。如果我在沒有調試的情況下運行應用程序,它只會關閉我的Nexus。
這是Delphi Android的一個已知問題/限制嗎?有沒有解決方法或推薦的方法來實現相同的結果(不僅僅是這個玩具的例子,但通常使用AddObject)?
Android編譯器使用ARC,因此您不能將整數視爲像你在Win32/64中做的那樣。 –
@StefanGlienke這是否意味着我可以在一個類中包裝整數(如Integer在java中),它應該工作? – Daniel
是的,看到這篇博客文章(它談論iOS,但同樣適用於Android):http://blogs.riversoftavg.com/index.php/2013/08/01/using-primitive-types-with-tstrings- in-ios/ –