Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2010, 02:17   #1
DimOn4Ik
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 206
По умолчанию Зависает программа

Код:
procedure Tmain.Timer1Timer(Sender: TObject);
var
   NowDate, BDate: string;
begin
 Table4.First;
  While not Table4.Eof do
  begin
  NowDate:= DateTimeToStr(now);
  BDate:= DateTimeToStr(Table4.FieldByName('rDate').AsDateTime);
  Delete (NowDate, length(NowDate)-2, 2);
  Delete (BDate, length(bdate)-2, 2);

  IF NowDate = Bdate then
  begin

simple.Label1.Caption:= main.DBText1.Caption;

    Table4.Delete;

   simple.ShowModal;

end;

application.ProcessMessages;

end

end;
добавляю в базу данных запись..и при попытки открытия формы для добавления новой записи программа зависает.. в это время выполняется поиск по бд с интервалом в 1 сек... возможно ли это как-то исправить?
DimOn4Ik вне форума Ответить с цитированием
Старый 29.05.2010, 04:08   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

самое простое, попробуй в цикл вставить Application.ProcessMessages;
самое разумное, это отдельный поток.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.05.2010, 14:02   #3
DimOn4Ik
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 206
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
самое простое, попробуй в цикл вставить Application.ProcessMessages;
самое разумное, это отдельный поток.
Не помогло.. Расскажите пожалуйста про потоки,как это сделать..

Может ошибка в цикле?

Последний раз редактировалось Stilet; 31.05.2010 в 07:38.
DimOn4Ik вне форума Ответить с цитированием
Старый 29.05.2010, 19:04   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

ребят, ну что Вы в самом то деле!
крутится цикл по записям:
Цитата:
Код:
Table4.First;
  While not Table4.Eof do
  begin
   . ....
а внутри цикла записи не сдвигаются!
Надо добавить, как минимум, переход на следующую запись внутри цикла:
Код:
 begin.
                .....
                 IF NowDate = Bdate then
                        begin
                           ....
                        end
                  else 
                   Table4.Next;
а как максимум пересмотреть алгоритм обработки!
Может быть, удаление ненужных записей через
SQL 'Delete from ... where rDate .... '
будет быстрее, проще и эффективнее?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.05.2010, 21:05   #5
DimOn4Ik
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 206
По умолчанию

Serge_Bliznykov,теперб всё отлично работает! Огромное спасибо!
DimOn4Ik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция зависает lobz1k Общие вопросы C/C++ 1 18.05.2010 05:05
Зависает комп Voda Компьютерное железо 3 27.08.2009 22:31
Изза потока зависает программа RNT Общие вопросы Delphi 9 10.07.2009 19:15
Мышь зависает(вирусы!!!) OPEOP Безопасность, Шифрование 3 28.12.2008 16:56
VB6. Программа зависает при выполнении. Artinka Помощь студентам 2 03.04.2008 00:06