将 firedac 查询结果格式化为列表框的字符串

format firedac query result as string for listbox

我有一个简单的 SQLite 数据库,其中有一个名为 table 的议程和一个名为 "slots" 的 VARCHAR(35) 字段。我有一个 FireDAC TFDConnection 和 TFDquery 能够查询 table。我的项目是针对 32 位 windows 和 64 位 IOS 的 C++ 多设备应用程序。在我的窗体上,我有一个 ListBox 控件。我正在尝试从查询中填充此 ListBox1。我不知道如何让它在 IOS.

中正常工作

我下面的问题代码行与尝试格式化从查询返回的字符串有关。我尝试了不同的组合基于:http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.AnsiStrings.Format 但没有任何效果。

Form1->ListBox1->Items->Add(System::UnicodeString::Format("%s", arguments, ARRAYSIZE(arguments) - 1));

这是我的相关代码:

void LoadListBox1()
{
  TFDQuery *query;
  query = new TFDQuery(NULL);

  __try {
    query->Connection = Form1->FDConnection1;
    query->SQL->Text = "SELECT * FROM agenda";
    query->Open();
    while (!query->Eof) {
      TVarRec arguments[1] = {query->FieldByName("slots")->AsString};
      Form1->ListBox1->Items->Add(System::UnicodeString::Format("%s", arguments, ARRAYSIZE(arguments) - 1));
      query->Next();
    }
  }
  __finally {
    query->Close();
    query->DisposeOf();
  }
}

使用 Tokyo C++ Builder 10.2 Update 2。IOS 是 iPhone 的最新版本。

好吧,我和一盒锤子一样笨。 SQLite 字段是一个 varchar,我应该把它变成一个文本字段。一旦我将 "slots" 字段修改为文本数据类型,下面的新代码行就可以正常工作。

Form1->ListBox1->Items->Add(query->FieldByName("slots")->AsString);

参见:http://docwiki.embarcadero.com/RADStudio/Tokyo/en/SQLite_support_in_RAD_Studio