• 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
Anatoliy понравилось это

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


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

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

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
4 часа назад, Akad сказал:

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

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

Anatoliy понравилось это

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


Ссылка на сообщение
Поделиться на других сайтах
  • 1
5 часов назад, Akad сказал:

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

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

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

Migrating Delphi Code to Mobile from Desktop

Zero-based strings (Delphi)

Rusland понравилось это

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


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

Rusland, Anatoliy, Alex7wrt и 1 другому понравилось это

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


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

    Нет пользователей, просматривающих эту страницу