Перенос кода с Delphi на Lazarus

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

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

Перенос кода с Delphi на Lazarus

Сообщение qivi » 24.09.2010 04:07:57

Как я понял тип HPen завязан на вин апи, следовательно является сугубо виндовой приблудой, это действительно так?
Можно ли его заменить или обойти в линуксе?
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Перенос кода с Delphi на Lazarus

Сообщение Vadim » 24.09.2010 06:17:31

HPen -> Handle или THandle -> Целочисленный тип.
Так что заменить можно запрсто, а вот обойти... Проблемы ведь не только в определённом типе. ;)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Перенос кода с Delphi на Lazarus

Сообщение qivi » 24.09.2010 06:57:09

Vadim писал(а):HPen -> Handle или THandle -> Целочисленный тип.


Странно, но компилятор что на HPen что на Handle ругается:
Код: Выделить всё
Error: Identifier not found "Handle"

для их использования какуюто библиотеку надо?... :shock:

Vadim писал(а):Так что заменить можно запрсто, а вот обойти... Проблемы ведь не только в определённом типе. ;)

Да проблемы то ясно дело что не только с ним, но на него пока больше всего.
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Перенос кода с Delphi на Lazarus

Сообщение Vadim » 24.09.2010 11:16:24

qivi писал(а):Странно, но компилятор что на HPen что на Handle ругается:

Абсолютно ничего нет в этом странного. :)
Вы ведь сказали, что Вам нужна программа под Линукс, а Handle и HPen - это производное модуля Windows. Надеюсь теперь Вы суть проблемы уловили? ;)
Как логическое следствие этого, не надо вообще использовать этот тип, а стоит использовать тот тип, на котором он основан, а именно - какой-нибудь целочисленный тип, например DWord.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Перенос кода с Delphi на Lazarus

Сообщение qivi » 24.09.2010 16:55:02

Но... тогда как быть с этим:
Код: Выделить всё
PenHdl := CreatePenHandle(canvas.Pen);
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Перенос кода с Delphi на Lazarus

Сообщение Vadim » 24.09.2010 17:19:21

canvas.Pen.Handle имеет тип HPEN или, для более общего случая - THandle, вот им и пользуйтесь.
У меня к Вам встречный вопрос - Вы в исходники Lazarus заглядывали? :) Клянусь своей треуголкой, Вы об этом узнали бы ещё вчера, если бы заголянули, а так потратили целые сутки совершенно на бесполезное ожидание. ;)
Вот Вам домашнее задание. :) Попробуйте контекстным поиском найти, в каком модуле объявлен тип HPEN. Не исключено, что этим типом можно пользоваться и в Linux, ведь у формы в Linux тоже есть Canvas и, соответственно, есть и Pen, у которого непременно отыщется Handle. ;)

Может Вы не с того места реализации своего алгоритма начали поиск?
Последний раз редактировалось Vadim 24.09.2010 17:30:03, всего редактировалось 2 раз(а).
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Перенос кода с Delphi на Lazarus

Сообщение evd » 24.09.2010 17:20:13

А что за функция CreatePenHandle? Это явно не WinAPI, а какая-то своя.

А для WinAPI функций попробуйте вместо модуля Windows использовать LCLIntf. Я так понял что через него эмулируются некоторые WinAPI функции средствами текущего виджетсета.
Аватара пользователя
evd
новенький
 
Сообщения: 21
Зарегистрирован: 13.09.2009 09:42:28
Откуда: Вологда

Re: Перенос кода с Delphi на Lazarus

Сообщение qivi » 24.09.2010 17:38:40

Vadim писал(а):Может Вы не с того места реализации своего алгоритма начали поиск?

Да он и не мой.

И Vadim, речь то идёт про Linux, модуль window не пойдёт :(
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Перенос кода с Delphi на Lazarus

Сообщение Vadim » 24.09.2010 18:01:01

qivi писал(а):И Vadim, речь то идёт про Linux, модуль window не пойдёт

Так я это понимаю. Это видно из самого первого поста. ;)
Давайте лучше Вы сначала опишете то, что хотите сделать и тогда можно будет уже переходить к алгоритмам реализации. Типы данных - это вообще не повод для обсуждения. Можно подобрать любой тип, но только в том случае, если правильно поставлена задача и найден необходимый путь реализации этой задачи. ;)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Перенос кода с Delphi на Lazarus

Сообщение qivi » 26.09.2010 00:49:39

Vadim писал(а):Давайте лучше Вы сначала опишете то, что хотите сделать и тогда можно будет уже переходить к алгоритмам реализации.


Ну если описать в двух словах, возможности LCL как правило существенно уже потребностей, ещё уже желаний, вобщем нащёл открытую библиотеку компонентов (дельфовых) котрой хотел автоматически визуализировать построение схем зависимостей уже в своей программе. Ну вот както неочень получается портировать. Если хочеш могу выложить, чем поможеш - буду признтелен.
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Перенос кода с Delphi на Lazarus

Сообщение Vadim » 26.09.2010 05:43:38

qivi
Кинь сюда ссылку - посмотрим.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Перенос кода с Delphi на Lazarus

Сообщение qivi » 26.09.2010 18:10:57

Вот это:
http://www.delphiexpert.ru/view_download.php?id=113

Мой пакет:
DrawObject.zip
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Перенос кода с Delphi на Lazarus

Сообщение .wOvAN » 27.09.2010 04:43:03

qivi Мдя, компонент прям таки напичкан, специфичными для виндовс и дельфи вещами, хиттест и прочее, долго придется портировать.
.wOvAN
постоялец
 
Сообщения: 118
Зарегистрирован: 16.04.2010 06:36:12


Вернуться в Lazarus

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 17

Рейтинг@Mail.ru