![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
замена стандартных модулей на Kol [Delphi, Windows]
Yura © (2004-01-05 16:49:00)В приложении (консольном)используюся модули: Windows, SysUtils, Classes.
Установил все из архивов kol и mck. В отдельную папку распакован sysdcuD6.zip и, как там написано, прописал путь на директорию, в которой положил этот набор файлов, в списке путей проекта ( Project/Options/Directories/Conditionals/Search path... ).
И ничего не получилось. При запуске пишет, что не может найти Classes.pas. Если указать имеющийся "стандартый", то затем просит указать путь и к SysUtils.pas. Ну и все остается как было (размер еxe).
Подскажите, что нужно было сделать? Хотелось бы все-таки доделать...
Galdalf (2004-01-16 10:14:00) [1]Да, а что ты еще хочешь? Чтобы код адаптировала? Не забывай после первого запуска ты к своей dfm - получишь все inc. Т.е. полноценный проект в плане интерфейса, за один клик - по мне это и так не мало.
ЮрийК (2004-01-15 14:37:00) [2]Про программу написано, ято это "утилита для автоматического перевода VCL проекта в NCK". Я понял пока, что переводятся только dfm файлы, а не целиком проект. Это так?
ЮрийК (2004-01-15 14:25:00) [3]На каком delphi он написан, в пятом что-то нормально сорсы не открылись, форму не желает показывать. Программу общего плана можно было бы и на VCL сделать, размер exe тут не так уж и важен.
Gandalf (2004-01-14 19:31:00) [4]Какое есть :)
ЮрийК (2004-01-11 17:12:00) [5]!Vcl->KOL есть, вернее VCL->MCK, на этом сайте KOLovrat зовется."
Не совсем удачное название. Если бы назвали Vcl2KOL или VclToKOL, было бы удачней, на мой взгляд.
Gandalf (2004-01-10 19:00:00) [6]Vcl->KOL есть, вернее VCL->MCK, на этом сайте KOLovrat зовется. Не фонтан но формы легко конвертит, а это самый рутинный этап береброски.
Yura (2004-01-09 14:47:00) [7]Не совсем уверен что я использовал (замену или нет)...
В одном варианте у меня в Usesуказан только Avl. И пути в Tools/Environment../Library/Library Path указал к файлам этого модуля. - экзешник 25 кбайт.
В другом (обычном)- в Usesуказаны Windows, Classes, SysUtils. При этом все лишние пути перед компиляцией удалял - 146 кбайт. Потом оставил только SysUtils. Остальное было лишним. Получилось 52 кбайта.
И в третьем - файлы из архива sysdcuD6.zip. Сначала в отдельную папку выгружа, пути к ней прописывал, потом, по совету Alekc (07.01.04 13:19) [6] выгрузил в папку с проектом и в Uses указал SysUtuls, Kol. Соответственно добавил пути к Kol (на первое место сверху). Но в этом варианте на WriteLn вылетает, и на UseInputOutput ругается (пробовал по рекомендации savva © (08.01.04 18:17) [19]). Переделывал несколько раз, по-разному. И один раз все-же прошло нормально. Но сейчас не уверен в чистоте того эксперемента.
Короче, вариант с Avl оказался у меня самым удачным! Может в остальных я что-то не так делал...
Avenger[NhT] (2004-01-09 12:52:00) [8]А ты использовал замену системных DCU?
Yura (2004-01-09 11:37:00) [9]По своему вопросу [18] (обращался к Avenger[NhT]) - вопрос решен. WriteLn; заменил на Writeln(''); и все работает (c Avl).
Экзешник стал 25 Кбайт. Но это все равно меньше чем 146 кбайт со стандартными библиотеками.
А может все это просто из-за того, что перезагрузился, после того, как последний раз пути перезаписал для Avl и Kol
Yura (2004-01-09 10:43:00) [10]Т.е. я хотел сказать, если указать в UsesWindows, Messages, Kol, то на вызове процедуры UseInputOutput спотыкается.
Yura (2004-01-09 10:31:00) [11]Вообще-то я пробовал с модулем Avl. Там такой процедуры нет.
В Kol.pas между прочим, тоже не нашел.
savva (2004-01-08 18:17:00) [12]> Yura (08.01.04 17:21) [18]
> To Avenger[NhT]
> Размер экзешника стал 18 Кбайт (был 146).
> Но вот в другом приложении почему-то на процедуре WriteLn;
> заканчивает работу (без сообщения об ошибке).
Если речь идет про KOL, и была замена системных модулей, то перед вызовом процедур Reаdln|Writeln и т.д. сделай 1 вызов UseInputOutput...
http://kol.mastak.ru/FAQ.htm#18
Yura (2004-01-08 17:21:00) [13]To Avenger[NhT]
Размер экзешника стал 18 Кбайт (был 146).
Но вот в другом приложении почему-то на процедуре WriteLn; заканчивает работу (без сообщения об ошибке). Программка сама по себе короткая. Вышлю на Ваш адрес, если будет время и желание - гляньте. Я не смог понять в чем причина.
ЮрийК (2004-01-08 17:00:00) [14]Мастера перевода Vcl -> Avl никто не пробовал написать, тогда бы было супер.
Тоже самое можно было бы спросить про мастер Vcl -> Kol. Может кому интересно это и время позволяет?
ЮрийК (2004-01-08 16:32:00) [15]Application.Initialize, Application.Run отсутствуют, не нужны?
Avenger[NhT] (2004-01-08 15:33:00) [16]Если нужны дополнительные компоненты, то качайте с форума на www.nht-team.org/forum/ там есть сворачивание в трей, md5, TICqClient, TNMPing еще че-то уже не помню...
Avenger[NhT] (2004-01-08 15:31:00) [17]to ЮрийК
Чтоб сделать из Vcl - Avl надо из модуля удалить {$R *.dfm}
сохранить проект, открыть заново, теперь не будет появлятся форма и не будут появлятся модули Dialogs, StdCtrls, Classes, Controls
В uses оставляй Windows, Messages, Avl;
D dpr ставь вместо Forms - Avl
ко между begin и end замени на
Form1 := TForm1.Create(nil, 'форма1');
Form1.Button1 := TButton.Create(Form1, 'кнопка1');
Form1.Button1.OnClick := Form1.Button1Click;
ну и так далее
TOpenDialog лучше не использовать, он потежелее чем функция OpenSaveDialog();
ЮрийК (2004-01-08 15:16:00) [18]Дополнение: вот что в главном модуле было сделано на VCL.
"type
TForm1 = class(TForm)
OD: TOpenDialog;
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
Button3: TButton;
SD: TSaveDialog;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;"
ЮрийК (2004-01-08 15:12:00) [19]Avenger[NhT]
"Если проект не визуальный то менять кроме uses скорее всего ничего не придется..."
А если визуальный? Кратко можете что-то сказать про то, что нужно сделать?
Я попробовал в достаточно простом проекте в uses поставить Avl вместо указанных ранее. Дельфи автоматически начинает добавлять модули Dialogs, StdCtrls, Classes, Controls. Это нормально, эти модули не очень влияют на размер?
Но самая проблема, что появляется сообщение ошибки на строку
"Application.CreateForm(TForm1, Form1);"
"[Error] Coding.dpr(11): Incompatible types: 'TComponentClass' and 'Class reference'."
Поясните, что с этим делать нужно? Какая-то другая строка должна быть?
Avenger[NhT] (2004-01-08 15:07:00) [20]to Yura
Если не трудно сообщите размеры программы до перевода и после для каждой библиотеки...