Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

где грабли? delphi и система виснут при попытке закр. программы [Delphi, Windows]


zetta ©   (2002-07-11 10:59:00) 

вот исходник:

program Project2;
uses Windows,
messages,kol;
{$R *.RES}
var
form:PControl;

Function bgproc( var Msg: TMsg; var Rslt: Integer ): Boolean;
begin form.canvas.moveto(random(100),random(100));
form.canvas.lineto(random(100),random(100));sleep(20);
bgproc:=false;
end;

procedure onclosemethod(sender:pobj;var accept:boolean);
begin
applet.close;
end;

begin
form:=NewForm(Applet,"Пример");form.onclose:=Toneventaccept(MakeMethod(nil,@onclosemethod));
form.onmessage:=TOnMessage(MakeMethod(nil,@bgproc));
run(form);
end.


Vladimir Kladov   (2002-07-26 12:20:00) [1]

Работайте с файлами без Assignfile. в KOL достаточно способов. Я уже
перечислял:
1) врапперы АПИ (FileCreate,...)
2) потоки (New...FileStream,...)
3) strList.LoadFromFile/SaveToFile
любой из этих способов экономичнее AssignFile как минимум на 5К кода.
К тому же, AssignFile не совместим с заменой system.dcu, а это еще 10К.
Но вообще-то, с AssignFile тоже должно работать. Надо только отключить генерацию exception по ошибке {$I-} кажется, и анализировать ошибки руками. Exception из VCL не совместим с KOL. Есть свой в err.pas, но при ошибках в паскалевскими файлами все равно создается VCL-вский, это встроено.


zetta   (2002-07-24 20:06:00) [2]

vcl-версия тоже не справляется: http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1027522983&n=0
там можно посмотреть механизм программы. как такое корректно реализовать на кол?


zetta   (2002-07-24 19:18:00) [3]

а что, таймер и работа с файлами не совместимы? у меня вызывает runtime error и зависаловы.


HekTo   (2002-07-12 16:52:00) [4]


> procedure onclosemethod(sender:pobj;var accept:boolean);
> begin
> applet.close;
> end;
>
> begin
> form:=NewForm(Applet,"Пример");form.onclose:=Toneventaccept(MakeMethod(nil,@onclosemethod));
> form.onmessage:=TOnMessage(MakeMethod(nil,@bgproc));
> run(form);
> end.


Или я отстал от жизни, или где тут Applet=NewApplet...
applet.close = nil.close ?


Vladimir Kladov   (2002-07-12 10:20:00) [5]

Внесите в какое-нибудь faq, что ли, не знаю уже, элементарщина - из раза в раз: параметра не хватает Dummy: Pointer для замещения self.


BorisMor   (2002-07-11 13:58:00) [6]

> zetta
> а как по таймеру?

Вот у Кладова на странице пример.
http://xcl.cjb.net/adv.zip



zetta   (2002-07-11 13:38:00) [7]

WM_CLOSE или WM_DESTROY обрабатывать как applet.close?


zetta   (2002-07-11 13:24:00) [8]

а как по таймеру?
в реальном проекте там чтение строки из файла, обработка, запись строки в другой файл, нарисовать индикатор и так до самого eof.


BorisMor   (2002-07-11 12:15:00) [9]

Вобще то (конечно IMHO :) лучше рисовать эти линии по таймеру, а ни вешать все это на обработку сообщений.


Gandalf   (2002-07-11 12:04:00) [10]

Грабли в событии OnMessage. Попробуй в OnMessage, отдельно случай WM_CLOSE или WM_DESTROY обработать.


Наверх

Титульная страница Поиск, карта сайта Написать письмо