Здрасте всем, вот этот код при старте весит в оперативке примерно 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", ни разу так не пробовал, но мало ли...