Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Глючиный цикл в таймере 
:(
    Опции темы
SCAR
  Дата 31.8.2006, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 17.8.2006

Репутация: нет
Всего: нет



Вопрос такой:
Код

struct dosdate_t d;
  _dos_getdate(&d);

   struct  time p;
   gettime(&p);

  int d1=StrToInt(d.day);
  int d2=StrToInt(d.month);
  int d3=d.year;
  int d4=StrToInt(p.ti_hour);
  int d5=StrToInt(p.ti_min);
  int d6=StrToInt(p.ti_sec);

  TForm3* Form3=new TForm3(this);
 int fd=1;
  for(int fd=0;fd<StringGrid1->RowCount;fd++)
  { 
  if((Chislo[fd]==d1)&&(Mes[fd]==d2)&&(God[fd]==d3)&&(Hour[fd]==d4)&&(Min[fd]==d5)&&(Sec[fd]==d6)&&(IntToStr(p.ti_hund)==0));
  {
  if(Form3->ShowModal()==mrOk)
  {Form3->Memo1->Text=StringGrid1->Cells[1][fd];
  Form3->Edit1->Text=StringGrid1->Cells[0][fd];
  }
  }
  }
  delete Form3;

Где все масивы, которые проверяются на равенство забиваются из StringGrid.  Этот цикл, ничего не проверяет, он бесконечно, в зависимости от таймера создает Form3. Как мне это устранить?
PM MAIL   Вверх
Friackazoid
Дата 31.8.2006, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 23.2.2006

Репутация: нет
Всего: 3



вообще не понимаю чего ты спрашиваешь...  smile  отвечу как могу
Код

struct dosdate_t d;
  _dos_getdate(&d);

   struct  time p;
   gettime(&p);
//переменные вся кие объявляються
  int d1=StrToInt(d.day);
  int d2=StrToInt(d.month);
  int d3=d.year;
  int d4=StrToInt(p.ti_hour);
  int d5=StrToInt(p.ti_min);
  int d6=StrToInt(p.ti_sec);
//создаеться новая Form3 не знаю
// она создаеться не в цикле,  так что бесконечное количество раз создаваться не может
  TForm3* Form3=new TForm3(this);
 int fd=1; //вообще не понимаю зачем ты сначала инициализируешь переменную так
  for(int fd=0;fd<StringGrid1->RowCount;fd++) //а потом еще и в цикле?????
//цикл выполняеться столько раз сколько строк в таблице и т.к fd ты нигде больше не
//меняешь, то он точно не бесконечный
  {
// даже если условия не выполняться то код ниже все равно выполниться
//убери ; в конце строки иначе получаеться пустой оператор
if((Chislo[fd]==d1)&&(Mes[fd]==d2)&&(God[fd]==d3)&&(Hour[fd]==d4)&&(Min[fd]==d5)&&(Sec[fd]==d6)&&(IntToStr(p.ti_hund)==0));
  {
  if(Form3->ShowModal()==mrOk)
//странное условие, если не ошибаюсь то функция ShowModal() возвращает void...
  {Form3->Memo1->Text=StringGrid1->Cells[1][fd]; //а здесь ты записаваешь число из таблицы
  Form3->Edit1->Text=StringGrid1->Cells[0][fd];// а вот здесь ты его переписываешь ;-)
// ты каждый рз записываешь в memo новое значение, затирая этим старое
// вот куда деваеться твой массив 
  }
  }
  }
  delete Form3;


кстати, я конечно всей программы не видела, но помоему создание и удаление формы тут не нужно. И к томуже окно удаляеться так Form3->DestroyWnd()
--------------------
Даже если тебя съели, то все равно есть два выхода.42Team блог
PM MAIL WWW ICQ GTalk   Вверх
SCAR
Дата 1.9.2006, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 17.8.2006

Репутация: нет
Всего: нет



Код

struct dosdate_t d;
  _dos_getdate(&d);

   struct  time p;
   gettime(&p);
//переменные вся кие объявляються
/*это в переменные записывается время и дата
  int d1=StrToInt(d.day);
  int d2=StrToInt(d.month);
  int d3=d.year;
  int d4=StrToInt(p.ti_hour);
  int d5=StrToInt(p.ti_min);
  int d6=StrToInt(p.ti_sec);
//создаеться новая Form3 не знаю
// она создаеться не в цикле,  так что бесконечное количество раз создаваться не может
/*Form3 - не создается, а инициализируется
  TForm3* Form3=new TForm3(this);
   for(int fd=0;fd<StringGrid1->RowCount;fd++) //а потом еще и в цикле?????
//цикл выполняеться столько раз сколько строк в таблице и т.к fd ты нигде больше не
//меняешь, то он точно не бесконечный
/* Вот именно, что не бесконечный, он вообще должен 1 раз работать(вызывать Form3), а делает это n-раз
  {
// даже если условия не выполняться то код ниже все равно выполниться
//убери ; в конце строки иначе получаеться пустой оператор
/*а вот это замечание исправлю, спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
if((Chislo[fd]==d1)&&(Mes[fd]==d2)&&(God[fd]==d3)&&(Hour[fd]==d4)&&(Min[fd]==d5)&&(Sec[fd]==d6)&&(IntToStr(p.ti_hund)==0));
  {
  if(Form3->ShowModal()==mrOk)
//странное условие, если не ошибаюсь то функция ShowModal() возвращает void...
/*Это условие означает нажатие кнопки Ок на Form3.
  {Form3->Memo1->Text=StringGrid1->Cells[1][fd]; //а здесь ты записаваешь число из таблицы
  Form3->Edit1->Text=StringGrid1->Cells[0][fd];// а вот здесь ты его переписываешь ;-)
/*я его не переписываю, посмотри индексы!
// ты каждый рз записываешь в memo новое значение, затирая этим старое
// вот куда деваеться твой массив 
  }
  }
  }
  delete Form3;

Большое спасибо за внимание, одно твое замечание Friackazoid все исправило(if(.....); )!!!

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0520 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.