Перенос кода с Delphi на Lazarus
Модератор: Модераторы
Перенос кода с Delphi на Lazarus
Как я понял тип HPen завязан на вин апи, следовательно является сугубо виндовой приблудой, это действительно так?
Можно ли его заменить или обойти в линуксе?
Можно ли его заменить или обойти в линуксе?
HPen -> Handle или THandle -> Целочисленный тип.
Так что заменить можно запрсто, а вот обойти... Проблемы ведь не только в определённом типе.
Так что заменить можно запрсто, а вот обойти... Проблемы ведь не только в определённом типе.
Vadim писал(а):HPen -> Handle или THandle -> Целочисленный тип.
Странно, но компилятор что на HPen что на Handle ругается:
Код: Выделить всё
Error: Identifier not found "Handle"для их использования какуюто библиотеку надо?...
Vadim писал(а):Так что заменить можно запрсто, а вот обойти... Проблемы ведь не только в определённом типе.
Да проблемы то ясно дело что не только с ним, но на него пока больше всего.
qivi писал(а):Странно, но компилятор что на HPen что на Handle ругается:
Абсолютно ничего нет в этом странного.
Вы ведь сказали, что Вам нужна программа под Линукс, а Handle и HPen - это производное модуля Windows. Надеюсь теперь Вы суть проблемы уловили?
Как логическое следствие этого, не надо вообще использовать этот тип, а стоит использовать тот тип, на котором он основан, а именно - какой-нибудь целочисленный тип, например DWord.
Но... тогда как быть с этим:
Код: Выделить всё
PenHdl := CreatePenHandle(canvas.Pen);canvas.Pen.Handle имеет тип HPEN или, для более общего случая - THandle, вот им и пользуйтесь.
У меня к Вам встречный вопрос - Вы в исходники Lazarus заглядывали?
Клянусь своей треуголкой, Вы об этом узнали бы ещё вчера, если бы заголянули, а так потратили целые сутки совершенно на бесполезное ожидание. 
Вот Вам домашнее задание.
Попробуйте контекстным поиском найти, в каком модуле объявлен тип HPEN. Не исключено, что этим типом можно пользоваться и в Linux, ведь у формы в Linux тоже есть Canvas и, соответственно, есть и Pen, у которого непременно отыщется Handle. 
Может Вы не с того места реализации своего алгоритма начали поиск?
У меня к Вам встречный вопрос - Вы в исходники Lazarus заглядывали?
Вот Вам домашнее задание.
Может Вы не с того места реализации своего алгоритма начали поиск?
Последний раз редактировалось Vadim 24.09.2010 17:30:03, всего редактировалось 2 раза.
- evd
- новенький
- Сообщения: 21
- Зарегистрирован: 13.09.2009 09:42:28
- Откуда: Вологда
- Контактная информация:
А что за функция CreatePenHandle? Это явно не WinAPI, а какая-то своя.
А для WinAPI функций попробуйте вместо модуля Windows использовать LCLIntf. Я так понял что через него эмулируются некоторые WinAPI функции средствами текущего виджетсета.
А для WinAPI функций попробуйте вместо модуля Windows использовать LCLIntf. Я так понял что через него эмулируются некоторые WinAPI функции средствами текущего виджетсета.
Vadim писал(а):Может Вы не с того места реализации своего алгоритма начали поиск?
Да он и не мой.
И Vadim, речь то идёт про Linux, модуль window не пойдёт
qivi писал(а):И Vadim, речь то идёт про Linux, модуль window не пойдёт
Так я это понимаю. Это видно из самого первого поста.
Давайте лучше Вы сначала опишете то, что хотите сделать и тогда можно будет уже переходить к алгоритмам реализации. Типы данных - это вообще не повод для обсуждения. Можно подобрать любой тип, но только в том случае, если правильно поставлена задача и найден необходимый путь реализации этой задачи.
Vadim писал(а):Давайте лучше Вы сначала опишете то, что хотите сделать и тогда можно будет уже переходить к алгоритмам реализации.
Ну если описать в двух словах, возможности LCL как правило существенно уже потребностей, ещё уже желаний, вобщем нащёл открытую библиотеку компонентов (дельфовых) котрой хотел автоматически визуализировать построение схем зависимостей уже в своей программе. Ну вот както неочень получается портировать. Если хочеш могу выложить, чем поможеш - буду признтелен.
qivi
Кинь сюда ссылку - посмотрим.
Кинь сюда ссылку - посмотрим.
qivi Мдя, компонент прям таки напичкан, специфичными для виндовс и дельфи вещами, хиттест и прочее, долго придется портировать.
