![]()  | 
	
 
  | 
| 
	 | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Подскажите пожалуйста как реализовать потоки в делфях (полный ламер, если можно поподробнее) 
		
	
		
		
		
		
		
	
		
		
	
	
	Проблема в том что пока идет процедура просчета, программа не отвечает и нельзя даже нажать кнопочку санцел, которая прерывает работу процедуры.   По идее с потоками должно получится, или может есть какой либо иной способ, помогите пожалуйста! | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Вот суперский документ по потокам _hххp://decoding.narod.ru/book/doc/synchronization.zip 
		
	
		
		
		
		
		
	
		
		
	
	
	Имхо больше ничего и не нужно знать. И годиться не только для делфи ![]()  | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
  | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
 Что значит "ссылка не на Инет ресурс". А на что? Или ты не догадался заменить _hххp на http. Или вообще выкинь из строки с адресом это - _hххp://, и все будет ок. Ну а если скачать не сможешь, пиши на decoding@narod.ru, вышлю. Цитата: 
	
 Если внутри цикла надо обрабатывать различные действия пользователя, нужно вставить внутрь цикла Application.ProcessMessages, и никакие потоки не нужны. Вот пример: Код: 
	begin
   // бесконечный цикл
   while true do
   begin
      {
         любые действия
      }
      Application.ProcessMessages;
      if ( условие_выхода ) then Break;
   end;
   // продолжаем работу после цикла
end;Последний раз редактировалось Decoding, 03.06.2006 в 21:23.  | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
 2 bravo насмешил :beer:  | 
| 
		 
			 
			#6  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
 Никогда не говори "никак"!!! Sleep() можно реализовать ручками, например так: Код: 
	var
  t: Cardinal;
begin
   {
      Делай что надо
   }
   // Потом Sleep на секунду
   t := GetTickCount;
   while GetTickCount-t < 1000 do
      Application.ProcessMessages;
   {
      И спокойно работай дальше
   }
end;И никакой поток тебе не нужен. Последний раз редактировалось Decoding, 04.06.2006 в 19:47.  |