0

SQLite db からの議題データを表示する C++ Builder (Tokyo 10.2.3) で単純な FMX アプリを構築しています。TComboBoxユーザーが表示されるものをフィルタリングできるように を追加しました。コンボ ボックスには、実行時に次の項目が追加されます (これらは委員会名です)。

Show PSSC
Show TD
Show RRMS

コンボ ボックスを使用して、データベースの SQL クエリにフィルターを追加しています。データセットにはフィールドがcommitteeあり、データの各行は 3 つの委員会 (PSSC、TD、RRMS) のいずれかに属しています。

以下は、フィルターをクエリに追加するための私のコードです。32 ビット Windows では正常に動作しますが、iOS や Android では動作しません。私がやっているのは、 を から にトリミングすること"Show "だけ.DeleteですUnicodeString mystring

mystring = Form1->cmbBoxFilters->Selected->Text;
mystring = mystring.Delete(1, 5);
query->SQL->Text = "SELECT * FROM mtgs WHERE weekday = '" + myday + "' AND committee = '" + mystring + "'";

これが起こっていることです.32ビットWindowsではmystring、まさにそうあるべきです. コンボボックスから「PSCCを表示」を選択するmystringと、「PSCC」になり、クエリはうまく機能します。しかし、iOSまたはAndroidで実行すると、mystring「SSCC」になります。選択されたものの最初の文字は S になります。なぜなのか、一生わかりません。

この「S」が 32 ビット Win ではなく、iOS または Android の元のコードにどのように表示されるかについて興味があるため、投稿しています。

ps Firemonkeyフォームで、、、TFDConnectionおよびTFDQueryを使用するだけです。FDPhysSQLiteDriverLink

4

1 に答える 1

0

つまり、モバイル コンパイラ (iOS/Android) のインデックスは 0 から、デスクトップ コンパイラ (Windows/OSX) のインデックスは 1 からという、コンパイラの違いのように見えます。それを指摘してくれた GSerg に感謝します。

これは、すべてのプラットフォームで明示的に 0-indexing を使用するソリューションです。唯一の変更点は、括弧の最後と括弧内0に追加されていることです。.Delete

mystring = mystring.Delete0(0, 5);

このコードは、Windows、iOS、および Android で同じように機能します。Remy からの古い投稿に感謝します: UnicodeString::Delete メソッド

于 2018-10-21T22:00:14.947 に答える