• 0
Akad

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

Вопросы

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 ответов на этот вопрос

  • 0

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

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

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

 

 

Изменено пользователем Alex7wrt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 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 пользователей онлайн

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