Форум по программированию Delphi Sources

 



Вернуться   Форум по программированию Delphi Sources > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.11.2017, 12:35
aspotkin aspotkin вне форума
Прохожий
 
Регистрация: 26.10.2017
Сообщения: 8
Версия Delphi: XE5
Репутация: 10
По умолчанию Зависает бесконечный цикл

Собственно, сабж... Первый раз цикл отрабатывает нормально. При втором проходе зависет. Абы когда, не на одной записи в массиве

start:
Код:
 Form2.ADOQuery1.SQL.Clear; // удаление предыдущего текста запроса
 mySQL := 'UPDATE `'+team+'` SET `url` ='''+url+'''  WHERE `vkid` ='''+idvk+''';';  //обновляем нашу запись
 Form2.ADOQuery1.SQL.Add(mySQL); // добавление нового текста запроса
 Form2.ADOQuery1.ExecSQL;
 Form2.ADOQuery1.Active := false; // отключаем запрос, если он был включен
 Form2.ADOQuery1.SQL.Clear; // удаление предыдущего текста запроса
 // новый запрос – код подставляется из поля Edit
 if (time>=8) and (22>=time) then begin
...................
В конце цикла  
goto start;
Админ: Пользуемся тегами при оформлении кода! При рецедиве бан

Не подскажете, в чем может быть проблема? Какие-то ограничения Delphi на время выполнения программы? Когда зависает - висит загрузка CPU на уровне 23-25%...

Последний раз редактировалось Admin, 10.11.2017 в 19:23.
Ответить с цитированием
  #2  
Старый 10.11.2017, 14:12
Аватар для Alegun
Alegun Alegun сейчас на форуме
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 2,760
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Зачем запрос отключаете, на момент выполнения он может не успеть обработаться и сервер вынужден давать отмену предыдущего, нужно просто содержимое чистить, последовательность действий должна быть примерно такой
Код:
...
with query do
 begin
  SQL.Clear;
  SQL.Add(
  ExecSQL;

  SQL.Clear;
  SQL.Add(
...
end;
да и вылова ошибок здесь явно не хватает
Код:
try

... {здесь выполнение запросов}

except
{При возникновении в коде любых ошибок}

   One: EDatabaseError do
   begin
     messageDlg(e.message, mtError, [mbOK], 0);
     exit;
   end;
   One: Exception do
   begin
     messageDlg(e.message, mtError, [mbOK], 0);
     exit;
   end;
end;
Ответить с цитированием
  #3  
Старый 10.11.2017, 14:18
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Адрес: Город на Бире
Сообщения: 262
Версия Delphi: XE7
Репутация: 429
Сообщение

Цитата:
Сообщение от aspotkin
...
start:
...
В конце цикла
goto start;
...
Чуть глаза не выпали! Какое еще goto!?!
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
Ответить с цитированием
  #4  
Старый 10.11.2017, 14:35
aspotkin aspotkin вне форума
Прохожий
 
Регистрация: 26.10.2017
Сообщения: 8
Версия Delphi: XE5
Репутация: 10
По умолчанию

Цитата:
Сообщение от Kailon
Чуть глаза не выпали! Какое еще goto!?!
А как красиво сделать возврат к необходимому месту в коде, чтобы цикл повторился?
Ответить с цитированием
  #5  
Старый 10.11.2017, 14:38
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Санкт-Петербург
Сообщения: 2,873
Репутация: выкл
По умолчанию

Цитата:
Сообщение от aspotkin
А как красиво сделать возврат к необходимому месту в коде, чтобы цикл повторился?
1. for ... to
2. while ... do
3. repeat ... until
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #6  
Старый 13.11.2017, 15:21
aspotkin aspotkin вне форума
Прохожий
 
Регистрация: 26.10.2017
Сообщения: 8
Версия Delphi: XE5
Репутация: 10
По умолчанию

Всем спасибо! Заработало, неправильно отрабатывали условия в цикле при определенных записях в БД и не всегда прогружался документ, синхронизация помогла
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:54.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources", 2004-2017

ВКонтакте   Facebook   Twitter