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

Я создаю простое приложение 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 Ответ

0 голосов
/ 22 октября 2018

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

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

mystring = mystring.Delete0(0, 5);

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

...