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

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

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

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

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

Сообщение qivi »

Как я понял тип HPen завязан на вин апи, следовательно является сугубо виндовой приблудой, это действительно так?
Можно ли его заменить или обойти в линуксе?
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

HPen -> Handle или THandle -> Целочисленный тип.
Так что заменить можно запрсто, а вот обойти... Проблемы ведь не только в определённом типе. ;)
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

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


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

Код: Выделить всё

Error: Identifier not found "Handle"

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

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

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

Сообщение Vadim »

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

Абсолютно ничего нет в этом странного. :)
Вы ведь сказали, что Вам нужна программа под Линукс, а Handle и HPen - это производное модуля Windows. Надеюсь теперь Вы суть проблемы уловили? ;)
Как логическое следствие этого, не надо вообще использовать этот тип, а стоит использовать тот тип, на котором он основан, а именно - какой-нибудь целочисленный тип, например DWord.
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

Но... тогда как быть с этим:

Код: Выделить всё

PenHdl := CreatePenHandle(canvas.Pen);
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

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

Может Вы не с того места реализации своего алгоритма начали поиск?
Последний раз редактировалось Vadim 24.09.2010 17:30:03, всего редактировалось 2 раза.
Аватара пользователя
evd
новенький
Сообщения: 21
Зарегистрирован: 13.09.2009 09:42:28
Откуда: Вологда
Контактная информация:

Сообщение evd »

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

А для WinAPI функций попробуйте вместо модуля Windows использовать LCLIntf. Я так понял что через него эмулируются некоторые WinAPI функции средствами текущего виджетсета.
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

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

Да он и не мой.

И Vadim, речь то идёт про Linux, модуль window не пойдёт :(
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

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

Так я это понимаю. Это видно из самого первого поста. ;)
Давайте лучше Вы сначала опишете то, что хотите сделать и тогда можно будет уже переходить к алгоритмам реализации. Типы данных - это вообще не повод для обсуждения. Можно подобрать любой тип, но только в том случае, если правильно поставлена задача и найден необходимый путь реализации этой задачи. ;)
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

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


Ну если описать в двух словах, возможности LCL как правило существенно уже потребностей, ещё уже желаний, вобщем нащёл открытую библиотеку компонентов (дельфовых) котрой хотел автоматически визуализировать построение схем зависимостей уже в своей программе. Ну вот както неочень получается портировать. Если хочеш могу выложить, чем поможеш - буду признтелен.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

qivi
Кинь сюда ссылку - посмотрим.
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

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

Мой пакет:
DrawObject.zip
.wOvAN
постоялец
Сообщения: 118
Зарегистрирован: 16.04.2010 06:36:12
Контактная информация:

Сообщение .wOvAN »

qivi Мдя, компонент прям таки напичкан, специфичными для виндовс и дельфи вещами, хиттест и прочее, долго придется портировать.
Ответить