Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

После запуска вылетает   Найти похожие ветки 

 
Jonis_84 ©   (2012-04-24 23:10) [0]

Доброго времени суток!Подскажите пожалуйста почему после запуска прога или вылетает или наоборот закрыть можно только через дисп.задач.Если не сложно то подскажите решения(Прога снимает опред. часть экрана по заданным координатам)
procedure TForm2.Timer1Timer(Sender: TObject);
var
Poz:TPoint;
srect,drect :trect;
iwidth,iheight:integer;
itmpx,itmpy :real;
c :tcanvas;

begin
iwidth:=image1.width;
iheight:=image1.height;
 drect:=bounds(0,0,iwidth,iheight);
   itmpx:=iwidth/2 ;
   itmpy:=iheight/2;
Poz.X:=StrToInt(Edit1.Text);
Poz.Y:=StrToInt(Edit2.Text);
   srect:=rect(Poz.x,Poz.y,Poz.x,Poz.y);
   inflaterect(srect,round(itmpx),round(itmpy));
     c:=tcanvas.create;
     c.handle:=getdc(getdesktopwindow);
image1.canvas.copyrect(drect,c,srect);
     c.free;
application.processmessages;
end;


 
Германн ©   (2012-04-25 01:11) [1]

А с какими целями в процедуру таймера поместили вызов application.processmessages;
?


 
AV ©   (2012-04-25 08:38) [2]

Чистый проект
copy|paste
- не вылетает, закрывается по крестику нормально


 
Anatoly Podgoretsky ©   (2012-04-25 08:58) [3]


> А с какими целями в процедуру таймера поместили вызов application.
> processmessages;

Возможно, чтобы повесить программу.


 
Jonis_84 ©   (2012-04-25 11:10) [4]

Работает но не продолжительно,через какое-то врямя сообщение "progect ....exe raised excepttion class $C00000FD with message "stack overflow at 0x76b245cc""-если запущено из delphi ,а если с  ....exe то закрыть можно только через дисп.задач,
исход. взял Здесь:
procedure tform1.timer1timer(sender: tobject);
var
srect,drect,posforme :trect;
iwidth,iheight,dmx,dmy:integer;
itmpx,itmpy :real;
c :tcanvas;
kursor :tpoint;

begin
if not isiconic(application.handle) then
begin // Получаем координаты курсора
getcursorpos(kursor);

// posform представляет прямоугольник с
// координатами form (image control).
posforme:=rect(form1.left,
form1.top,
form1.left+form1.width,
form1.top+form1.height);
//Показываем magnified screen
//если курсор за пределами формы.
if not ptinrect(posforme,kursor) then begin
// Далее код можно использовать для увеличения выбранной
// части экрана.
iwidth:=image1.width;
iheight:=image1.height;
drect:=bounds(0,0,iwidth,iheight);
itmpx:=iwidth / (trackbar1.position * 4);
itmpy:=iheight / (trackbar1.position * 4);
srect:=rect(kursor.x,kursor.y,kursor.x,kursor.y);
inflaterect(srect,round(itmpx),round(itmpy));
//Получаем обработчик(handle) окна рабочего стола.
c:=tcanvas.create;
try
c.handle:=getdc(getdesktopwindow);
//Передаём часть изображения окна в tImage.
image1.canvas.copyrect(drect,c,srect);
finally
c.free;
end;
end;
// Обязательно обрабатываем все сообщения windows.
application.processmessages;

end;
end;


 
AV ©   (2012-04-25 11:12) [5]


>  "stack overflow

procedure tform1.timer1timer(sender: tobject);
....
begin
 timer1.enable := false;
   бла-бла-бла
 timer1.enable := true;
end;


 
Jonis_84 ©   (2012-04-25 11:32) [6]

Спасибо!!!Работает , а почему?????????????????????????????????????????????????


 
AV ©   (2012-04-25 11:36) [7]

не успевает выйти из процедуры, как снова заходит
все параметры при входе и адреса возврата копируются в стэк
т.о. стэк растет пока не преполняется

конструкция

onTimer;
timer1.enable := false;
  бла-бла-бла
timer1.enable := true;

гарантирует, что не зайдет второй раз, пока не выйдет

примерно поэтому!!!!!!!!!!!!!!! :)


 
Jonis_84 ©   (2012-04-25 11:40) [8]

Спасибо


 
Плохиш ©   (2012-04-25 11:44) [9]


> Jonis_84 ©   (25.04.12 11:10) [4]

Ты больше там говнокод не бери.

> Jonis_84 ©   (25.04.12 11:40) [8]

Надеюсь это application.processmessages из кода выкинул?


 
han_malign   (2012-04-25 15:03) [10]


  WM_TIMER   |  TApplication.Run
             |     TApplication.HandleMessage
             |        TApplication.ProcessMessage
             |          tform1.timer1timer
             |             ...  
             |             ...  
  WM_TIMER   |             ...  
             |             // Обязательно обрабатываем все сообщения windows.
             |             TApplication.ProcessMessages
             |                TApplication.ProcessMessage
             |                   tform1.timer1timer
             |                      ...  
             |                      ...  
  WM_TIMER   |                      ...  
             |                      // Обязательно обрабатываем все сообщения windows.
             |                      TApplication.ProcessMessages
             |                         TApplication.ProcessMessage
             |                            tform1.timer1timer
             |                               ...  
             |                               ...  
  WM_TIMER   |                               ...  
                 .........................................



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.072 c
2-1330668332
Кос
2012-03-02 10:05
2013.03.22
Загрузка файла из списка ComboBox


15-1352320203
Юрий
2012-11-08 00:30
2013.03.22
С днем рождения ! 8 ноября 2012 четверг


15-1339690335
alexdn
2012-06-14 20:12
2013.03.22
asp.net


15-1343889055
БарЛог
2012-08-02 10:30
2013.03.22
Велопоход в никуда с палаткой на несколько дней


15-1352865495
MonoLife
2012-11-14 07:58
2013.03.22
Диалоговое окно выбора папки в играх.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский