Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > программа "зависает"


Автор: Napalm 17.3.2004, 14:11
когда работает кусок программы то прога начинает жрать немеряные ресурсы машины и визуально она "подвисает" т.е. переключение на другие задачи идет, но когда переключаюсь на свою прогу, то окно не прорисовывается... что посоветуете?

пример кода


while i<datasource1.DataSet.RecordCount do
begin
if datasource1.DataSet.Fields[18].AsInteger=0 then
adotable1.InsertRecord(
[datasource1.DataSet.Fields[0].AsString,
datasource1.DataSet.Fields[1].AsString,
datasource1.DataSet.Fields[2].AsFloat,
datasource1.DataSet.Fields[3].AsFloat,
datasource1.DataSet.Fields[4].AsFloat,
datasource1.DataSet.Fields[5].AsFloat,
datasource1.DataSet.Fields[6].AsFloat,
datasource1.DataSet.Fields[7].AsFloat,
datasource1.DataSet.Fields[8].AsFloat,
datasource1.DataSet.Fields[9].AsFloat,
datasource1.DataSet.Fields[10].AsFloat,
datasource1.DataSet.Fields[11].AsFloat,
datasource1.DataSet.Fields[12].AsFloat,
datasource1.DataSet.Fields[13].AsString,
datasource1.DataSet.Fields[14].AsDateTime,
datasource1.DataSet.Fields[15].AsString,
datasource1.DataSet.Fields[16].AsString,
datasource1.DataSet.Fields[17].AsFloat,
false])
else
adotable1.InsertRecord(
[datasource1.DataSet.Fields[0].AsString,
datasource1.DataSet.Fields[1].AsString,
datasource1.DataSet.Fields[2].AsFloat,
datasource1.DataSet.Fields[3].AsFloat,
datasource1.DataSet.Fields[4].AsFloat,
datasource1.DataSet.Fields[5].AsFloat,
datasource1.DataSet.Fields[6].AsFloat,
datasource1.DataSet.Fields[7].AsFloat,
datasource1.DataSet.Fields[8].AsFloat,
datasource1.DataSet.Fields[9].AsFloat,
datasource1.DataSet.Fields[10].AsFloat,
datasource1.DataSet.Fields[11].AsFloat,
datasource1.DataSet.Fields[12].AsFloat,
datasource1.DataSet.Fields[13].AsString,
datasource1.DataSet.Fields[14].AsDateTime,
datasource1.DataSet.Fields[15].AsString,
datasource1.DataSet.Fields[16].AsString,
datasource1.DataSet.Fields[17].AsFloat,
true]);

datasource1.DataSet.Next;
inc(i);
end;

Автор: <Spawn> 17.3.2004, 14:47
поставь Appliction.ProcessMessages для каждой итерации цикла

Автор: Napalm 17.3.2004, 16:00
класная штука. можно коротко сказать что оно делает? и кстати насколько серьезно замедляет работу программы? и еще есть некоторое неудобство - то, что все компоненты которые на форме- активны и работают... ну да ладно. буду благодарен за ответы

и кстати возможно ли убрать зависание тут

idFTP1.Get(filename,path);

Автор: Pakshin A. S. 17.3.2004, 21:28
А елеси замутить процессик?! Без Precess'a можно будет обойтися...

Автор: Vit 17.3.2004, 21:41
Цитата
А елеси замутить процессик?!



А это как?

Автор: Pakshin A. S. 17.3.2004, 21:45
Ну засунуть цикл в процессbiggrin.gif
Дааа... дибилизмом попахиваетbiggrin.gif

Автор: Vit 17.3.2004, 21:47
Цитата
дибилизмом попахивает



Именно!

Автор: p0s0l 17.3.2004, 23:02
Pakshin A. S., наверное, хотел сказать поток, а не процесс. Хотя и с процессом можно намутить...


Автор: Cheba 18.3.2004, 02:08
Цитата
idFTP1.Get(filename,path);

Ты idAntyfriz на форму положил? В доках пишут, что он помогает...

Автор: Napalm 25.3.2004, 11:41
ок, спасибо. реально помагает smile.gif кстати где можно взять доку по id? smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)