Метод удаления UnicodeString (другой результат между 32-битным Win и iOS/Android)

Я создаю простое приложение FMX в C++ Builder (Токио 10.2.3), которое отображает данные повестки дня из базы данных SQLite. Я добавил 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" отображается в моем исходном коде на iOS или Android, а не в 32-битном Win.

PS просто использую TFDConnection, TFDQuery, а также FDPhysSQLiteDriverLink в моей форме Firemonkey.

1 ответ

Решение

Таким образом, это похоже на разницу в компиляторах: мобильные компиляторы (iOS/Android) индексируют с 0 и настольные компиляторы (Windows/OSX) индексируют с 1. Спасибо GSerg за указание на это.

Вот решение, которое явно использует 0-индексирование для всех платформ. Единственные изменения 0 Вы видите добавлено в конце .Delete а также в скобках:

mystring = mystring.Delete0(0, 5);

Этот код работает одинаково на Windows, iOS и Android. Спасибо старому посту от Реми: UnicodeString:: Удалить метод

Другие вопросы по тегам