Вверх ↑
Ответов: 4621
Рейтинг: 746
#1: 2009-11-11 15:48:55 ЛС | профиль | цитата
Иван Балван писал(а):
а что туда нужно писать что бы было норм если не секрет
Я новичок и не разу схемы не переделывал такие большие и сложные
А так охото что то сделать


Попробую помочь. Расскажу, как бы делал я. Рекомендации касаються пока только невизуального компонента, и, конечно, не являются пошаговой инструкцией, а просто общими соображениями. Ну и, как рекомендовал nesco, вначале нужно потренироваться на небольших схемах.
Я так понял, ты хочешь сделать компонент для работы с ICQ.
Смотрим на блок uses:


uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, XPMan, ICQClient, ICQWorks, StdCtrls, Buttons, ExtCtrls;

Сразу должен обратить внимание, какие используются стандартные модули, а какие - нестандартные (ICQClient, ICQWorks). Переделывать стандартные модули, чтобы они работали в HiAsm - занятие абсолютно безполезное (придется переделать всю VCL - а это даже представить страшно), да и это в большинстве случаев не нужно. Думаю, в данном случае тебе нужно разобраться в работе компонента TICQClient, который, подозреваю, и реализован в модулях ICQClient, ICQWorks.
Предполагается, что ты знаком з понятием "класс" и как с ним работать. Если нет - тогда сначала усвой работу с классами, а также принцыпы работы компонентов Delphi.

Открываешь модуль, в котором обьявлен TICQClient и разбираешся в его методах и свойствах: для чего они предназначаются, какой из них отвечает за визуальное отображение компонента на форме (эти пока лучше не трогать), а какой - за основную функциональность (прием, отправка сообщений и т. п.). Смотришь реализацию этих методов и отмечаешь какие в них стандартные функции используються (API, для работы со строками, числами, датой и т. п. - т.е. те, которые уже имеются в KOL или котрые можно найти в VCL и безболезненно портировать в HiAsm). Основная идея - чтобы отделить модули ICQClient, ICQWorks от модулей VCL, чтобы в uses остались только Windows, ICQClient, ICQWorks.
Затем пытаешься отделить невизуальную часть от визуальной. Например, я так понимаю, ICQClient должен иметь методы (точки) типа "doAutorize" "doSent" и событие "onMessage".
Для этого ему визуального ничего не нужно. При поступлении нового сообщения точка onMessage выдает его в поток, а ты уже можешь добавить его, например, в стандартный список. Поэтому визульные методы класса TICQClient нужно просмотреть на наличие каких-то функций, не относящихся к отображению компонента на форме, но имеющих значение для функционирования компонента.
Пытаешься избавится от стандартных модулей, прописанных в uses модулей ICQClient и ICQWorks.
Потом делаешь собственный класс, который содержит только функциональные методы (интерфейсные отбрасываешь). Конечно, новый класс ты уже не сможешь тестировать, просто бросив компонент на форму; создавать экземпляр нужно будет вручную (aaa:=TMyICQClient.Create(...);). Всё это, конечно, будет сопровождаться шишками на лбу в виде ошибок компиляции, перелопачивания вдоль и поперек модулей ICQClient и ICQWorks и т.п.
Созданный класс обьявляется в новом модуле, в uses которого прописываются только Windows, ICQClient, ICQWorks. Затем код из ICQClient, ICQWorks перносится в твой новый модуль.
В конце у тебя должен получится один модуль (например, ICQClient.pas) в котором обьявлен только один готовый класс (например, TMyICQClient) и требуемые API-функции, которые остались после избавления от стандартных модулей.
Если ты сможешь на этом этапе получить работающий класс, тогда портирование под HiAsm не будет сложным.
карма: 26

0