![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка : "Неверный дескриптор" и "Параметр задан не верно" [D7, XP]
worldmen © (2009-03-02 09:56:00)Есть процедуры:
procedure TForm1.tmTrueFromDockTimer(Sender: TObject);
Var
bmpDoc : TBitmap;
R,G,B : Word;
x,y: integer;
Begin
x := StrToInT(Edit37.Text);
y := StrToInT(Edit38.Text);
repeat
PrintScreen(x, y, 1, 1, bmpDoc);
R := GetRValue(bmpDoc.Canvas.Pixels[0,0]);
G := GetGValue(bmpDoc.Canvas.Pixels[0,0]);
B := GetBValue(bmpDoc.Canvas.Pixels[0,0]);
until (R<100)and(G>100)and(B>100);
...
end
и
procedure TForm1.tmFlyTimer(Sender: TObject);
Var
bmpStop : TBitmap;
R,G,B : Word;
x,y: integer;
Begin
tmFly.Enabled:=false;
x := StrToInT(Edit37.Text);
y := StrToInT(Edit38.Text);
repeat
PrintScreen(x, y, 1, 1, bmpStop);
R := GetRValue(bmpStop.Canvas.Pixels[0,0]);
G := GetGValue(bmpStop.Canvas.Pixels[0,0]);
B := GetBValue(bmpStop.Canvas.Pixels[0,0]);
until (R>100)and(G>100)and(B>100);
...
End
procedure TForm1.PrintScreen(x,y,w,h: integer; var bmp : TBitmap);
Begin
bmp := TBitmap.Create;
Bmp.PixelFormat := pf16Bit;
bmp.Width := w;
bmp.Height:= h;
StretchBlt(bmp.Canvas.Handle,0,0, w,h, GetDC(0),x,y, w,h, SRCCOPY);
End;
Выполняются эти процедуры по таймерам (последовательно через промежуток времени). Програмы работала нормально, я дописывал другие процедуры не связанные с этими. Позже при выполнении появилась ошибка "Направильный дескриптор" в первой процедуре на строке
R := GetRValue(bmpDoc.Canvas.Pixels[0,0]);
Я сделал точку останова на предыдущей строке и выполнил пошагово - выполнилось без ошибок.
Я запустил на выполнение программу с начала - первая проедура выполнилась, а такая же ошибка возникла на второй процедуре
procedure TForm1.tmFlyTimer(Sender: TObject);в такойже строке:
R := GetRValue(bmpStop.Canvas.Pixels[0,0]);
Исправить ошибку не получилось. Принес прогу на др. ком, запустил - опять ругается на строку из первой процедуры.
worldmen (2009-03-02 12:33:00) [1]Я уже написал выше - нашел ошибку. Всем спасибо.
clickmaker (2009-03-02 12:27:00) [2]> Говорил при заходе второй раз в repeat
судя по этому, деструктора все-таки нет )
Ega23 (2009-03-02 12:21:00) [3]
> У него там троеточие стоит
Глаз-ватерпас. Не заметил. :)
Rouse_ (2009-03-02 12:18:00) [4]
> глобальный пока вижу один.
У него там троеточие стоит, так что не факт что деструктора нет :)
Ega23 (2009-03-02 12:16:00) [5]
> тут не один косяк. К тому же, неоптимально
глобальный пока вижу один. Остальные - надо весь код смотреть.
clickmaker (2009-03-02 12:11:00) [6]тут не один косяк. К тому же, неоптимально
Ega23 (2009-03-02 11:31:00) [7]
> Говорил при заходе второй раз в repeat
Сам косяк найдёшь, или подсказать?
worldmen (2009-03-02 11:20:00) [8]
> Прикольно. А через сколько времени программа тебе говорила
> о "недостаточно оперативной памяти для работы"?
Говорил при заходе второй раз в repeat
worldmen (2009-03-02 11:19:00) [9]Похоже нашел ошибку - связано и с таймером тоже.
Ega23 (2009-03-02 11:06:00) [10]Прикольно. А через сколько времени программа тебе говорила о "недостаточно оперативной памяти для работы"?
worldmen (2009-03-02 11:04:00) [11]Удалил dcu
И сделал: Project->Build All Projecs - не помогло.
Anatoly Podgoretsky (2009-03-02 11:03:00) [12]Зачем два практически одинаковых обработчика, к тому же между ними и между собой будут гонки и как результат разрушение стека.
Rouse_ (2009-03-02 10:36:00) [13]Удали DCU и сделай ребилд