0

我有一个在 Embarcadero C++Builder 中构建的多设备 FMX 表单。该应用程序打开一个本地 SQLite 数据库文件 ( my_local.db) 并对它执行查询。

它在 iOS 上运行良好,但在 Android 上崩溃。没有要捕获的错误。SQLite 文件存在,语句ShowMessage内部返回.#if"/data/user/0/com.embarcadero.Project1/files/my_local.db"

如果我注释掉该query->Open()语句,代码就会运行并且应用程序不会崩溃。

#if defined(_PLAT_IOS) || defined(_PLAT_ANDROID)
Form1->FDConnection1->Params->Values["ColumnMetadataSupported"] = "False";
Form1->FDConnection1->Params->Values["Database"] = System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetDocumentsPath(), "my_local.db");
if (FileExists(Form1->FDConnection1->Params->Values["Database"])) {
    ShowMessage(Form1->FDConnection1->Params->Values["Database"]);   // if file there show its path
}
#endif

TFDQuery *query;
query = new TFDQuery(NULL);
query->Connection = Form1->FDConnection1;
query->SQL->Text = "SELECT * FROM info";
query->Open();

有关如何捕获此错误的任何指示或建议?

4

1 回答 1

0

Remy 将代码移出 Form 的构造函数的建议解决了 Android 上的未知崩溃问题。现在它运行但给出了如下所示的错误(这可能是最初导致崩溃的错误,我无法捕捉到)。错误消息如下所示。解决方案很简单——在表单上放置一个 TFDGUIxWaitCursor。这样做之后,它运行良好。

在此处输入图像描述

于 2018-03-27T16:34:32.593 回答