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

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

Тормоза и таймер [D7, XP]


Страницы:   1 2 3 4

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();??? :(

Подскажите пожалуйста, куда смотреть?


Страницы:   1 2 3 4

Наверх

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