簡體   English   中英

調用Firedac時Android delphi應用程序分段錯誤(11)異常

[英]Android delphi application Segmentation fault (11) exception when calling Firedac

我對Delphi XE5 Firedac應用程序有疑問。 我使用ZTE Blade 3手機運行應用程序。 我使用Deployment Manager將數據庫文件添加到asset \\ internal目錄。 但是當我調用FDQuery1.FieldByName('Nimi')。AsString時,它引發了異常Segmentation錯誤(11)。謝謝。

FDQuery1.SQL.Clear;
FDQuery1.SQL.Add('SELECT * FROM Laskuttaja');

FDQuery1.Open();
FDQuery1.First;
while(not FDQuery1.Eof) do begin
FormTiedot.EditNimi.Text := FDQuery1.FieldByName('Nimi').AsString;
FormTiedot.EditOsoite.Text := FDQuery1.FieldByName('Osoite').AsString;
FormTiedot.EditY.Text := FDQuery1.FieldByName('Ytunnus').AsString;
FDQuery1.Next;
end;
if FormTiedot.ShowModal = mrOk then begin
FDQuery1.SQL.Clear;
FDQuery1.SQL.Add('UPDATE Laskuttaja SET Nimi = '+QuotedStr(FormTiedot.EditNimi.Text)+', Osoite = ' + QuotedStr(FormTiedot.EditOsoite.Text) + ', Ytunnus=' + QuotedStr(FormTiedot.EditY.Text));
FDQuery1.SQL.Add('WHERE ID=1');

該行發生錯誤:

FormTiedot.EditNimi.Text := FDQuery1.FieldByName('Nimi').AsString;

分段錯誤表示您正在引用無效的內存。 因此,這可能是由於以下至少一種原因引起的:

  • FormTiedot無效。
  • FormTiedot.EditNimi無效。
  • FDQuery1無效。
  • FDQuery1.FieldByName('Nimi')返回nil

現在,據我所知, FieldByName()引發異常以指示失敗,而不是返回nil 並且FDQuery1當然是有效的,否則早期的代碼將失敗。

因此,最可能的結論是FormTiedotFormTiedot.EditNimi均無效。 也許您無法實例化FormTiedot

訪問類FServerMethods1Client時,我能夠解決(編譯后錯誤給出了函數功能“ TClientModule1.GetServerMethods1Client:TServerMethods1Client;”。)轉到菜單:“ 項目”->“選項”->“表單”;

驗證TClientModule1在“自動創建”表單中是否位於第一位。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM