Здрасте всем, вот этот код при старте весит в оперативке примерно 1450 кб. Во-первых: примерно каждые 2 секунды увеличивается на 4 Кб, а во вторых прога не хочет коректно закрываться. При долгой работе вообще машина виснет. Подскажите что нетак.
procedure pause(p:byte); // процедура пауза без зависания программы var pa1:ttime; begin pa1:=encodetime(0,0,p,0)+time; repeat application.processmessages; sleep(10); until time>=pa1; end;
procedure TForm1.tmr1Timer(Sender: TObject); var i, j, j1, i1:Integer; wnd:hwnd; begin
a:=0; //обнуляем счётчик, делаем скрин, чистим переменную скрина, грузим его в Timage(img1)
for i:=450 to 665 do //в img2 выдёргиваем фрагмент картинки из img1 for j:=8 to 18 do img2.Canvas.Pixels[i-450,j-8]:=img1.Canvas.Pixels[i,j]; for i1:=0 to 225 do for j1:=0 to 10 do if img2.Canvas.Pixels[i1,j1]=RGB(247,150,133) then a:=a+1; // считаем количество пикселей нужного цвета, сумируем их lbl1.Caption:=IntToStr(a); if GetAsyncKeyState(88)<>0 then // если была нажата клачиша Х и если есть окно с заголовки ччччч, и если счётчик <0 begin // то в это окно посылаем tab, если счётчик >0 то f1 wnd:= FindWindow(nil, PChar('ччччч')); while wnd>0 do begin
if a<1 then begin SendMessage(wnd,WM_KEYDOWN,VK_tab,0); SendMessage(wnd,WM_KEYup,VK_tab,0); pause(3); end else begin pause(4);
SendMessage(wnd,WM_KEYDOWN,VK_f1,0);
SendMessage(wnd,WM_KEYup,VK_f1,0); end; end; end;
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
//img1.Picture.SaveToFile('C:\1.bmp'); end;
procedure TForm1.FormCreate(Sender: TObject); begin img1.Hide; end;
procedure TForm1.btn1Click(Sender: TObject); begin tmr1.Interval:=0; end;
procedure pause(p:byte); // процедура пауза без зависания программы var pa1:ttime; begin pa1:=encodetime(0,0,p,0)+time; repeat application.processmessages; sleep(10); until time>=pa1; end;
была мысль написать подобную процедуру\функцию, так как сам намучился уже с зависанием формы...
Собственно по делу, попробуй добавить:
Code
Img1.Free; Img2.Free; Canvas.Free;
после завершения программы, и еще как я понял ты не используешь "DC", ни разу так не пробовал, но мало ли...