[英]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
當然是有效的,否則早期的代碼將失敗。
因此,最可能的結論是FormTiedot
或FormTiedot.EditNimi
均無效。 也許您無法實例化FormTiedot
?
訪問類FServerMethods1Client時,我能夠解決(編譯后錯誤給出了函數功能“ TClientModule1.GetServerMethods1Client:TServerMethods1Client;”。)轉到菜單:“ 項目”->“選項”->“表單”;
驗證TClientModule1在“自動創建”表單中是否位於第一位。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.