Kylix > Lazarus

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Kylix > Lazarus

Сообщение Владимир » 24.08.2007 10:25:18

Доброго времени суток!
Поставил на Linux FPC 2.0.4 + Lazarus 0.9.22 - под мои задачи ОЧЕНЬ нравится.
Поскольку Kylih помер, приложения, написанные на нем надо бы портировать в Lazarus.
Сейчас делаю это тупо в лоб:
1. Создаю проект, набрасываю компоненты, муторно редактирую их имена.
2. Подсовываю .pas из Kylih-проекта.
3. Редактирую раздел uses
4. Для визуальных комп. имитирую обработку событий.

Может, кто подскажет более легкий способ?
Владимир
постоялец
 
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Сообщение Alexx2000 » 27.08.2007 02:01:10

Можно попробовать сделать проще.
Открываете ваши модули.
В главном меню пункт "Инструменты -> Преобразовать модуль Delphi в Lazarus", скармливаете ему все модули. После этого все формы будут преобразованы в формат Lazarus.
Конечно могут быть проблемы, однако думаю их будет проще решить чем заново проектировать интерфейс.
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 488
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Сообщение Владимир » 27.08.2007 11:36:29

Спасибо, пробую, пока без успеха
1. Создал пустой проект
2. Открыл модули, преобразовал - Ок
3. При попытке преобразовать проект требует сохранения и вываливается ??
4. Переименовал .xfm в .dfm, преобразовал - Ок
5. Не понятно, как формировать файл ресурсов?
Владимир
постоялец
 
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Сообщение Alexx2000 » 27.08.2007 14:15:46

Владимир писал(а):5. Не понятно, как формировать файл ресурсов?

Вообще у меня он сгенерировался автоматически. Кроме того Лазарус генерирует ресурсы, если юнит прописан в uses главного модуля проекта. В крайнем случае можно воспользоваться утилитой lazres.
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 488
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Сообщение Владимир » 27.08.2007 20:38:06

Спасибо, попробую.
При старте Lasar идет ругань на неверные данные файла .lfm - типа свойства TLabel какие-то не те, свойства SpeedButton не те и т.д.
Свойства формы Scaled, проблемные Label и SpeedButon в .lfm убил - без толку...
Вываливает целиком .lfm и предлагает удалить неверные строки - после удаления в файле не остается практически ничего.
Вопрос 1 - утилита lazres откуда запускается и с какими параметрами?
Вопрос 2 - при попытке преобразовать файл .dpr следует сразу Сохранить и вываливаюсь из проекта. Так должно быть?
Вопрос 3 - при разработке меню в Kylix указание в свойстве Caption символа дефис приводило к созданию горизонтального разделителя между пунктами меню - в Лазаре я этого не нашел - должны быть проблемы с формированием .lfm и .lrs?
Вопрос 4 - есть ли в Лазаре проблема запуска приложения с различным разрешением экрана? В Kylix это решалось просто - в процедуре FormCreate свойство формы Scaled устанавливалось в True.
Уважаемый Постоялец, если можно, напишите схему преобразования для чайника - у меня ощущение, что 10-летний стаж писания софта под Pascal/Delphi/Kylix ни чему меня не научил???
Владимир
постоялец
 
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Сообщение Максим » 27.08.2007 21:04:43

По поводу конвертации форм некоторая информация имеется здесь: http://wiki.lazarus.freepascal.org/Code_Conversion_Guide#Converting_Delphi_projects.2Fforms.2Funits_to_Lazarus

У FPC 2.0.4 имеются проблемы с интерпретацией юникодовых строк, поэтому Lazarus при импортировании будет ругаться на каждое свойство с ними, например, такое, как Caption. Все эти свойства надо удалить.

С FPC 2.1.4 Lazarus уже не будет ругаться на такие свойства, но их содержимое превратится в мусор.

Поэтому, если русские надписи на форме сохранены в файле DFM в юникоде, вы их потеряете, и придётся вводить их заново.
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 598
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Сообщение Владимир » 28.08.2007 10:35:53

Всем спасибо - получилось!
Владимир
постоялец
 
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Сообщение Владимир » 28.08.2007 14:17:51

Максим писал(а):С FPC 2.1.4 Lazarus уже не будет ругаться на такие свойства, но их содержимое превратится в мусор.

Поэтому, если русские надписи на форме сохранены в файле DFM в юникоде, вы их потеряете, и придётся вводить их заново.


Потратил пол-часа и Replace -ом восстановил криллицу в .xfm файле.
Кому интересно, могу выложить таблицу соответствия
Владимир
постоялец
 
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Сообщение v-t-l » 28.08.2007 16:41:37

Кому интересно, могу выложить таблицу соответствия

Это было бы неплохо.
А в какую кодировку?
v-t-l
энтузиаст
 
Сообщения: 734
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Сообщение Владимир » 28.08.2007 20:28:15

v-t-l писал(а):Это было бы неплохо.
А в какую кодировку?

Кодировка CP-1251
Кириллица заглавные от А (#1040) до Я (#1071) - по порядку, исключая Ё
Строчные от а (#1072) до я (#1103), также исключая ё
Придется вспомнить алфавит...
Похоже, это какая-то внутренняя кодировка Kylix - ему так удобно.

При портировании столкнулся с небольшой проблемой - некоторые Label.GroupBox-Caption-ы рисуют абракадабру - по свойству CharSet= DefaultCharSet
и требуют явного указания Russian_CharSet - тогда все Ок, в то время как на кнопках все Ок, только шрифт мелкий
Если разберусь - отпишу.
p.s. Такое ощущение, что Инструменты-Преоbразовать-.dfm в .lfm сводится к замене расширения имени файла - странно! - или я не прав?
Владимир
постоялец
 
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Сообщение Максим » 28.08.2007 21:46:52

Похоже, это какая-то внутренняя кодировка Kylix - ему так удобно.

Если я правильно понимаю, это UTF-8. Подробнее здесь:
http://www.freepascal.org/mantis/view.php?id=1402

Такое ощущение, что Инструменты-Преоbразовать-.dfm в .lfm сводится к замене расширения имени файла - странно! - или я не прав?

Насколько я помню, вы правы. Но ничего удивительного в этом нет. Lazarus очень прилично совместим с Дельфями, и эта поддержка постоянно улучшается. Форматы форм у них одинаковые. А свойства на корректность проверяются в любом случае при открытии.
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 598
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Сообщение Владимир » 29.08.2007 22:52:49

Господа-граждане, похоже, функция msg(string,mtConfirm,[mbOk] и т.д.) корректно работпет только на главной форме - на других формах вываливается в ошитбку.
Еще вопрос - как "подсунуть" портированную форму в качестве гланой - редактировать HTML-файл?
Владимир
постоялец
 
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Сообщение Brainenjii » 29.08.2007 22:59:21

Не совсем понял, Вы win1251 тексты в utf8 перекодируете ? Я это iconv'ом делаю...
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Владимир » 01.09.2007 14:17:48

Brainenjii писал(а):Не совсем понял, Вы win1251 тексты в utf8 перекодируете ? Я это iconv'ом делаю...

Нет. При портировании .xfm - файлов (Kylix) в Lazarus все Caption-ы не читаются и загрузка валится. Поэтому приходится Replac-ом заменять #коды на кириллицу
Владимир
постоялец
 
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Сообщение Владимир » 01.09.2007 14:45:04

Владимир писал(а):Господа-граждане, похоже, функция msg(string,mtConfirm,[mbOk] и т.д.) корректно работпет только на главной форме - на других формах вываливается в ошитбку.
Еще вопрос - как "подсунуть" портированную форму в качестве гланой - редактировать HTML-файл?

Разобрался - ф-ю MessageDLG следует использовать только в рамках одного окна/панели - иначе она не понимает, куда возвращать фокус.

Господа-граждане, не понятно поведение BitBtn по Enter и Esc.
1. Если Kind=bkOk, то не отрабатывается Enter на доп.клавиатуре.
2. Если Kind=bkCancel и ModalResult=mrCancel(могу ошибаться - точно не помню), то по Esc програма закрывается!!?
3. Если на панели 2 BitBtn, одна с bk=bkOk, а другая с bkCancel, то работает только одна, у которой Default=True.
Конечно, не смертельно, но неприятно...
p.s. Подскажите, куда отправлять обнаруженные глюки? Дело-то общее!
Владимир
постоялец
 
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28

Рейтинг@Mail.ru