Перейти к содержанию
Fire Monkey от А до Я
  • 0

Нужны на мобильной платформе строки, которые работают по стандарту языка pascal.


Akad

Вопрос

Как известно строки на мобильных ОС последних версий студии не соответствуют стандартам Pascal/Delphi - нумерация начинается с нуля и так далее. Что мягко говоря доставляет при разработке кросс-платформенных приложений. Особенно с библиотеками из до-XE эры.

Встречал на западных форумах упоминания для более ранних XE хак исправляющий этот идиотизм. Но то, что скачивал - на заработало под 10.2, даже после доводки напильником. Может у кого под 10.2 рабочий завалялся?
 

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Описанные вами отличия существуют, но сложностей они не вызывают.

Достаточно единожды использовать конструкции для платформ вроде такой:

    {$IF DEFINED(MSWINDOWS)}
        start_index:=1;
    {$ELSE}
        start_index:=0;
    {$ENDIF}

 

 

Изменено пользователем Alex7wrt
Ссылка на комментарий
  • 0
  • Модераторы
4 часа назад, Akad сказал:

И каким образом это повлияет на разработанную 15 лет назад библиотеку?

вы думаете проблема только в индексе? а то что кодировка уже не анси, это мелочи?

Ссылка на комментарий
  • 1
  • Модераторы
5 часов назад, Akad сказал:

Как известно строки на мобильных ОС последних версий студии не соответствуют стандартам Pascal/Delphi - нумерация начинается с нуля и так далее. Что мягко говоря доставляет при разработке кросс-платформенных приложений. Особенно с библиотеками из до-XE эры.

Встречал на западных форумах упоминания для более ранних XE хак исправляющий этот идиотизм. Но то, что скачивал - на заработало под 10.2, даже после доводки напильником. Может у кого под 10.2 рабочий завалялся?
 

Рекомендую ознакомиться с официальной документацией:

Migrating Delphi Code to Mobile from Desktop

Zero-based strings (Delphi)

Ссылка на комментарий
  • 0
22 минуты назад, Равиль Зарипов (ZuBy) сказал:

вы думаете проблема только в индексе? а то что кодировка уже не анси, это мелочи?

Библиотека написана нормально. 1 или 2 байта строкопредставлении - разницы нет. Под виндой работает без проблем. Проблема лишь в мобильных устройствах из-за не очень умного человека, который такое сотварил с мобильной версией дельфи, нарушив все стандарты.

P.S. Что бы избежать дальнейших вопросов не по теме - библиотека pascalc. Скрипты. Написана более 15 лет назад. Аналоги, совместимые с XE линейкой мобильных устройств мне не известны. Код править не хочу, так как во-первых очень много мест где можно ошибиться - тратить неделю на отладку пока не планирую. А во-вторых у меня собственного и парсинга строк полно. Сейчас пока обхожусь $IFDEF MSWINDOWS, но это тупо и не правильно. А правильно вылечить студию, от этого идиотизма.

17 минут назад, Andrey Efimov сказал:

Рекомендую ознакомиться с официальной документацией:

Извиняюсь. А где там что-то полезное?

Если бы {$ZEROBASEDSTRINGS OFF} работало, то я бы понял. Но оно не даёт под андроидом ни какого эффекта.

 

Изменено пользователем Akad
Ссылка на комментарий
  • 1
  • Модераторы
2 часа назад, Akad сказал:

Если бы {$ZEROBASEDSTRINGS OFF} работало, то я бы понял. Но оно не даёт под андроидом ни какого эффекта.

Отлично работает. Проверил на Андроиде в Berlin 10.1.2 и Tokyo 10.2.1, скрины ниже. К слову, в исходниках студии есть файлы в которых используется эта директива и всё прекрасно работает.

Скрытый текст


Berlin.png

 

Tokyo.png

 

С библиотекой pascalc не сталкивался, поэтому ничего конкретного не подскажу.

Ссылка на комментарий
  • 0

Я конечно извиняюсь, но обвинять делфи что оно "не соответствует стандартам делфи" выглядит мягко говоря как феерический бред :D Еще скажи, то приложения x16 (компилируемые Turbo Pascal 7.0) почему то не работают на x64, вот же неумные люди всё испортили, не?

Изменено пользователем Tumaso
Ссылка на комментарий
  • 0

ну как обычно - ничего не хочу делать, скажите куда ткнуть что бы все заработало ))

хочешь что бы заработало - перепиши код. нумерация с нуля это не та проблема о которой надо переживать собираясь писать под мобильные устройства на делфи. проблема в другом. в том что fmx вообще ни как не совместим с vcl и буквально все надо переписывать с нуля. поэтому никакой обратной совместимости в коде не будет. 

Изменено пользователем haword
Ссылка на комментарий
  • 0
22 часа назад, Andrey Efimov сказал:

Отлично работает. Проверил на Андроиде в Berlin 10.1.2 и Tokyo 10.2.1, скрины ниже. К слову, в исходниках студии есть файлы в которых используется эта директива и всё прекрасно работает.

Удивительно. До этого пробовал (и ранее находил эту рекомендацию), после поста пробовал - не работало. Сейчас попробовал ещё раз - всё ок. То ли билд алл был нужен, то ли ещё чего. В общем всё ок. Благодарю. Вопрос закрыт. Хотя не понимание зачем было отходить от стандартов паскаля "по умолчанию" - осталось.

12 часа назад, Tumaso сказал:

Я конечно извиняюсь, но обвинять делфи что оно "не соответствует стандартам делфи" выглядит мягко говоря как феерический бред

Почитай Вирта для разнообразия и не гони бред сам.
 

12 часа назад, haword сказал:

проблема в другом. в том что fmx вообще ни как не совместим с vcl и буквально все надо переписывать с нуля. поэтому никакой обратной совместимости в коде не будет.

Может это кривость твоих ручек? У меня в текущем проекте сервер и визуальный редактор написаны на VCL, клиент под винду, андроид и линукс - fmx. Ни каких проблем. Двиг отдельно, UI отдельно. Причём замечу визуальный редактор на vcl компонентов, которые fmx.
 

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...