![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Тормоза и таймер [D7, XP]
Alex_Ford © (2008-11-07 10:05:00)Привет!
Мастера у меня программа выполняет несколько задач. Все задачи выполняет таймер. Но от этого комп сильно тормозит. Используется всего один компонент таймер с интервалом в одну секунду. Что нужно сделать чтобы все работало без тормозов.
С уважением!
Германн (2008-11-09 01:33:00) [1]
> Leonid Troyanovsky © (09.11.08 01:26) [71]
Эк тебя понесло! Четыре сообщения в одной ветке за менее чем час!
:)
Leonid Troyanovsky (2008-11-09 01:26:00) [2]
> Johnmen © (09.11.08 01:08) [70]
> "скыртый роцесс", не надо переосмысливания...:)))
Вторую часть запамятовал, виноват.
--
Regards, LVT.
Johnmen (2008-11-09 01:08:00) [3]
> Leonid Troyanovsky © (09.11.08 00:58) [69]
> Дык, это ж будет "скыртый" процесс :)
"скыртый роцесс", не надо переосмысливания...:)))
Leonid Troyanovsky (2008-11-09 00:58:00) [4]
> Сергей М. © (08.11.08 17:12) [63]
> и батоном) убивать милые его сердцу цацки и закрывать разные
> непотребные папки ?)
Дык, это ж будет "скыртый" процесс :)
А с папками во-ще непонятно.
Видимо, имелось ввиду закрытие найденных по их заголовкам
окон проводника. Но это весьма наивный путь.
В целом планируемый продукт годиться для того, чтобы
мешать мамке играть в солитера и заглядывать в скаченное.
--
Regards, LVT.
Leonid Troyanovsky (2008-11-09 00:38:00) [5]
> Riply © (08.11.08 17:26) [64]
> Может и будет результат.
Шанс исправиться есть.
Т.е., учесть все замечания, уточнить постановку задачи,
проработать код и показать его здесь.
Тогда и увидим.
--
Regards, LVT.
Leonid Troyanovsky (2008-11-09 00:29:00) [6]
> Alex_Ford (08.11.08 14:38) [57]
> Но. когда список достигает около 200-300 элементов с активным
> свойством checked, то программа ужасно сильно тормозит.
Для поиска лучше использовать не checklistbox,
а, например, TStringList (Sorted = true) and Find.
--
Regards, LVT.
Johnmen (2008-11-08 20:01:00) [7]
> Riply © (08.11.08 17:26) [64]
> Может и будет результат.
Эт вряд ли (c)
> Во всяком случае, он упорен.
В выпрашивании сырцов?
> Так что шанс есть :)
Наивная...
Anatoly Podgoretsky (2008-11-08 18:40:00) [8]> Loginov Dmitry (08.11.2008 16:41:02) [62]
Ты под разбор случайно попался.
Riply (2008-11-08 17:26:00) [9]> [63] Сергей М. © (08.11.08 17:12)
> А кто будет кликать на крыжиках в чеклистбоксе ?
Это уже следующая задача.
Пусть человек "покопается" в коде, который ему дали,
разберет его по косточкам (или по битикам :)).
Может и будет результат.
Во всяком случае, он упорен. Так что шанс есть :)
Сергей М. (2008-11-08 17:12:00) [10]
> Alex_Ford
А кто будет кликать на крыжиках в чеклистбоксе ?
Неужели тот самый юзер, целый раб.день только и играющийся в цацки вместо выполнения прямых служ.обязанностей ?
Он что, настолько тупорылый, что своимиже руками (с пом. любезно предоставленной тобой приблуды с чеклистбоксами и батоном) убивать милые его сердцу цацки и закрывать разные непотребные папки ?)
Loginov Dmitry (2008-11-08 16:41:00) [11]> А что делает exe и неужели компилятор тебе ничего не сказал,
> или ты отключил все сообщения, что бы он не надоедал?
Анатолий, меня-то за что так?)
Anatoly Podgoretsky (2008-11-08 16:22:00) [12]
> Ребят, на этом форуме часто стали прикалываться над начинающими.
Ты к ним не относишься...
Anatoly Podgoretsky (2008-11-08 16:18:00) [13]> Loginov Dmitry (08.11.2008 12:44:43) [43]
А что делает exe и неужели компилятор тебе ничего не сказал, или ты отключил все сообщения, что бы он не надоедал?
Alex_Ford (2008-11-08 15:21:00) [14]Я согласен с Вами. Не спорю. Нет - у меня не "низкий-низкий" уровень. Но я начинающий. Где-то получается быстро и легко, где-то трудно или вообще невозможно нетолько вникнуть, но и понимать. Например, эта ветка форума, для меня одна из самых сложных тем. Но разобраться, попытаться хоть что-то понять - очень сильно хочется. Если бы мне было все равно, или лень - я бы не стал тратить время впустую.
Согласитесь: Не всем программирование дается одинаково. Каждый копается и открывает для себя новое, интересное и полезное ПО СВОЕМУ.
Модераторов прошу меня не наказывать, если я что-то не так сказал.
Мотив на свое "несоображение" я принимаю.
Loginov Dmitry (2008-11-08 15:03:00) [15]> А подсказать или помочь никто не хочет.
В данном случае это не мудрено. Тому есть причины. В основном - это уровень автора. По тому коду, что здесь выкладывается создается впечатление, что уровень автора очень-очень низкий. Человек самостоятельно не может расставить операторные скобки BEGIN..END. Ясно, что никакие объянения и подсказки не помогут. Единственный способ помочь - выложить готовый год, причем комментировать его - бесполезно. Форумчане же стремятся помогать именно подсказками и намеками, с надежной, что человек вникнет и поймет. А "помогать" автору путем написания готового кода безо всякой надежды на то, что он вникнет - нет абсолютно никакого желания. Это пустая трата времени.
Alex_Ford (2008-11-08 14:38:00) [16]Большое спасибо!
Не понятно только одно, почему, когда в списке отмечено 2-3 элемента на обработку, программа работает ХОРОШО!
Но. когда список достигает около 200-300 элементов с активным свойством checked, то программа ужасно сильно тормозит.
Leonid Troyanovsky (2008-11-08 14:37:00) [17]
> Alex_Ford (08.11.08 14:05) [53]
> Подскажите пожалуйста, куда смотреть?
Смотреть надо http://msdn.microsoft.com/.
Т.е., обязательно анализировать возвращаемый результат
и если требуется, то и GetLastError.
Например:
h := OpenProcess(PROCESS_TERMINATE, false, FP.th32ProcessID);
try
Win32Check(h <> 0);
Win32Check(TerminateProcess(h, 0));
finally
if h <> 0 then
CloseHandle(h);
end;
--
Regards, LVT.
engine (2008-11-08 14:29:00) [18]
uses ..., TlHelp32;
....
var
h : THandle;
tPE32 : tagPROCESSENTRY32;
begin
tPE32.dwSize := SizeOf(tPE32);
h := CreateToolHelp32SnapShot(TH32CS_SNAPALL, 0);
if Process32First(h, tPE32) ...
...
end;
Leonid Troyanovsky (2008-11-08 14:21:00) [19]
> Alex_Ford (08.11.08 14:05) [53]
> Я немного плохо соображаю здесь. Затрудняюсь что писать
> в скобках.
uses
tlhelp32;
procedure TForm1.Button1Click(Sender: TObject);
var
h:Thandle;
i: Longint;
Co:BOOL;
FS:THandle;
FP:TProcessEntry32;
begin
FS:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
FP.dwSize:=Sizeof(FP);
Co:=Process32First(FS,FP);
repeat
for i := 0 to CheckListBox1.Count-1 do
if checkListBox1.Checked[i] then
if ((UpperCase(ExtractFileName(FP.szExeFile))=
UpperCase(CheckListBox1.Items[i]))) then
{сравниваем имя файла с запрещенными}
{и если найдено, то}
begin
h:= OpenProcess(PROCESS_TERMINATE, false, FP.th32ProcessID);
Win32Check(h <> 0);
Win32Check(TerminateProcess(h, 0));
CloseHandle(h);
end;
until (not Process32Next(FS,FP));
CloseHandle(FS);
end;
Но, это еще не все. Перед тем как вешать подобный код
на таймер нужна тщательная работа над ошибками.
Как, например, CloseHandle(FS); д.б. в секции finally.
--
Regards, LVT.
Alex_Ford (2008-11-08 14:05:00) [20]Леонид! Спасибо за помощь!
Я немного плохо соображаю здесь. Затрудняюсь что писать в скобках.
CreateToolhelp32Snapshot()- TH32CS_SNAPPROCESS, 0;
Process32First();??? :(
Подскажите пожалуйста, куда смотреть?