Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Таблица StringGrid, ошибка, если есть пустое поле 
V
    Опции темы
faithless
Дата 13.7.2007, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Подскажите, пожалуйста, как можно сделать так, чтобы выдавалась ошибка если в StringGrid есть незаполненные поля???   smile 

for(int i=1;i<3;i++)
        for(int j=1;j<=StringGrid1->RowCount;j++)
                if(StringGrid1->Cells[i][j]=="") 
                       {
                       Form3->Visible=false;
                       Form2->Show(); }
                else
                        ShowMessage("Ошибка!");

PM MAIL ICQ   Вверх
_hunter
Дата 13.7.2007, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



написать наоборот?
if(StringGrid1->Cells[i][j]=="") 
    ShowMessage("Ошибка!");
else
{
    Form3->Visible=false;
    Form2->Show();
}




--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
faithless
Дата 13.7.2007, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



тоже пробовала. Думаю что он не правильно понимает " ". Можно как то по другому задать что поле пустое???
PM MAIL ICQ   Вверх
Rodman
Дата 13.7.2007, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Код

    for(int i=1;i<3;i++)
        for(int j=1;j<=StringGrid1->RowCount;j++)
                if(StringGrid1->Cells[i][j].Length()==0)//пустая ячейка
                       {
                         ShowMessage("Ошибка!");
                         Form3->Visible=false;
                         Form2->Show();
                       }
                else
                        ShowMessage("не Ошибка!");

это имелось ввиду?!
PM MAIL WWW Skype GTalk YIM MSN   Вверх
faithless
Дата 13.7.2007, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Можно ли как то сделать чтобы ошибка выдавалась только один раз?
PM MAIL ICQ   Вверх
Rodman
Дата 13.7.2007, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



то что должно происходить в условии, не знаю, то само условие проверь!

Цитата(faithless @  13.7.2007,  15:08 Найти цитируемый пост)
Можно ли как то сделать чтобы ошибка выдавалась только один раз? 

Код

    BOOL isit=False;
    for(int i=1;i<3;i++)
        for(int j=1;j<=StringGrid1->RowCount;j++)
                if(StringGrid1->Cells[i][j].Length()==0)//длина строки в ячейке равна 0
                          isit=True;
    if(isit==True)
        ShowMessage("Ашыпка!"); //;)
    else
        ShowMessage("не Ошибка!");


ЗЫ: _hunter, ну что за пример для молодежи?!

Это сообщение отредактировал(а) Rodman - 13.7.2007, 16:20
PM MAIL WWW Skype GTalk YIM MSN   Вверх
faithless
Дата 13.7.2007, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Очень странно, но теперь он всегда выдает Ашыпка, не зависимо от того заполнены поля или нет  
PM MAIL ICQ   Вверх
Rodman
Дата 13.7.2007, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



faithless, покажи код... как ты заполняешь грид!


Код

        BOOL isit=False;
    for(int i=1;i<=StringGrid1->ColCount;i++)
        for(int j=1;j<=StringGrid1->RowCount;j++)
                StringGrid1->Cells[i][j]=IntToStr(i*j);
   for(int i=1;i<=StringGrid1->ColCount;i++)
        for(int j=1;j<=StringGrid1->RowCount;j++)
                if(StringGrid1->Cells[i][j].Length()==0)//длина строки в ячейке равна 0
                          isit=True;
    if(isit==True)
        ShowMessage("Ашыпка!"); //;)
    else
        ShowMessage("не Ошибка!");

вот у меня все нормально выдает - "не Ошибка!"

Это сообщение отредактировал(а) Rodman - 13.7.2007, 16:45
PM MAIL WWW Skype GTalk YIM MSN   Вверх
faithless
Дата 13.7.2007, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



void __fastcall TForm3::FormCreate(TObject *Sender)
{
StringGrid1->Cells[0][0]="выа";
StringGrid1->Cells[1][0]="ваыа";
StringGrid1->Cells[2][0]="авол";
StringGrid1->Cells[0][1]="1";
}
PM MAIL ICQ   Вверх
Rodman
Дата 13.7.2007, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



faithless, пользуйся кнопкой "Код"!

ну это не пример! по твоему примеру не заполнены все ячейки!

вот например, где StringGrid1->Cells[0][2], StringGrid1->Cells[0][3]???

Добавлено через 1 минуту и 5 секунд
а если ты заполняешь вручную, то проверяй пошагово!

и помни, что ячейки начинаются с 0! а в цикле у тебя с 1...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
faithless
Дата 13.7.2007, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



они должны заполняться при запуске.

Добавлено через 2 минуты и 46 секунд
Можешь показать как проверить пошагово? 
PM MAIL ICQ   Вверх
Rodman
Дата 13.7.2007, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



лопустим число столбцов 3, а строк 2!
Код

        BOOL isit=False;
   StringGrid1->Cells[0][0]="1";
   StringGrid1->Cells[1][0]="ваыа";
   StringGrid1->Cells[2][0]="авол";
   StringGrid1->Cells[0][1]="2";
   StringGrid1->Cells[1][1]="выа";
   StringGrid1->Cells[2][1]="ваыа";
   for(int i=1;i<=StringGrid1->ColCount;i++)
        for(int j=1;j<=StringGrid1->RowCount;j++)
                if(StringGrid1->Cells[i][j].Length()==0)//длина строки в ячейке равна 0
                          isit=True;
    if(isit==True)
        ShowMessage("Ашыпка!"); //;)
    else
        ShowMessage("не Ошибка!");


проверь!
PM MAIL WWW Skype GTalk YIM MSN   Вверх
faithless
Дата 13.7.2007, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Проблема в том что у меня нет определенного числа строк. Их можно как добавлять так и удалять (уже после запуска программы). и поля я заполняю во время работы.   
PM MAIL ICQ   Вверх
MODE
Дата 13.7.2007, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А а просто проверять перед внесением данных в таблицу нельзя ????
У тебя как организован ввод данных 

Типа защита от дурака  smile

Код



  AnsiSting text;
  
  text = StringGrid1->Cells[i][j]
  
  if (text.Length()==0) 

      ShowMessage("Не верный ввод данных");
  
  else
      
      StringGrid1->Cells[i][j] = text;

 



Это сообщение отредактировал(а) MODE - 13.7.2007, 17:28
PM MAIL   Вверх
Rodman
Дата 16.7.2007, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Цитата(faithless @  13.7.2007,  16:06 Найти цитируемый пост)
Проблема в том что у меня нет определенного числа строк. Их можно как добавлять так и удалять (уже после запуска программы). и поля я заполняю во время работы.    

Код

   for(int i=1;i<=StringGrid1->ColCount;i++) //StringGrid1->ColCount выдает кол-во столбцов
        for(int j=1;j<=StringGrid1->RowCount;j++)//StringGrid1->RowCount выдает кол-во строк

так что при проверке будут проверены все ячейки.. сколько бы их там не было!
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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