Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Непонятная ошибка при проверке введённых элементов 
V
    Опции темы
IamDreamer
Дата 27.4.2008, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код
for i:=1 to StringGrid1.ColCount do
      if TryStrToInt(StringGrid1.Cells[i, 1], z)=true then
        c[i]:=StrToInt(StringGrid1.Cells[i,1]) else
        begin
          MessageDlg('Массив заполнен неверно.',mtError, [mbOK], 0);
          Exit;
        end;

При любом раскладе выдаёт сообщение о неверно заполненном массиве.
Массив одномерный, помещается в одну строку, поэтому смысла во вложенном цикле, в принципе, нет.
PM MAIL WWW Jabber   Вверх
THandle
Дата 27.4.2008, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

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



Цитата(IamDreamer @  27.4.2008,  13:23 Найти цитируемый пост)
for i:=1 to StringGrid1.ColCount do
      if TryStrToInt(StringGrid1.Cells[i, 1], z)=true then
        c[i]:=StrToInt(StringGrid1.Cells[i,1]) else
        begin
          MessageDlg('Массив заполнен неверно.',mtError, [mbOK], 0);
          Exit;
        end;



Прикол)) А если первый элемент StringGrid'а содержит в себе не число? ТО что? Прям сразу и выходим? smile

Добавлено через 2 минуты и 44 секунды
Сделай вот так:

Код

procedure TForm1.Button1Click(Sender: TObject);
var
  i, z : integer;
begin
  for i := 1 to StringGrid1.ColCount - 1 do
    if TryStrToInt(StringGrid1.Cells[i, 1], z)=true then
      ShowMessage('Числоî')
    else
      MessageDlg('Элемент массива заполнен не верно',mtError, [mbOK], 0);
end;


И заполни первую строку StringGrid так:

(у моего StringGrid'а свойство ColCount = 5, первый не заполняем)

вввв|54|fgg|24

Отдельные элементы разделены.

Добавлено через 6 минут и 12 секунд
Вот так то есть заполни)) Уж кину картинку)

user posted image

Потом кнопочку брось на форму и напиши вышенаписанный мною код)
PM   Вверх
IamDreamer
Дата 27.4.2008, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код
for i:=1 to StringGrid1.ColCount do
      if TryStrToInt(StringGrid1.Cells[i, 1], z)=true then
        a[i]:=StrToInt(StringGrid1.Cells[i,1]) else
        begin
          MessageDlg('Массив заполнен неверно.',mtError, [mbOK], 0);
          Exit;
        end;

Это я вписал в другом модуле, в котором сортировка другим методом. То же самое, но работает. Пробовал много раз.

Добавлено через 1 минуту и 46 секунд
Цитата(THandle @  27.4.2008,  12:28 Найти цитируемый пост)
Прикол)) А если первый элемент StringGrid'а содержит в себе не число? ТО что? Прям сразу и выходим? smile

У меня так процесс проходит: сначала я заполняю все поля в StringGrid'e, а потом они все проверяются. При хотя бы одном "нехорошем" элементе, программа выходит. 

PM MAIL WWW Jabber   Вверх
THandle
Дата 27.4.2008, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

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



Цитата(IamDreamer @  27.4.2008,  13:39 Найти цитируемый пост)

Это я вписал в другом модуле, в котором сортировка другим методом. То же самое, но работает. Пробовал много раз.



Все модули в студию smile

Добавлено через 1 минуту и 42 секунды
В виде архивчика естественно smile 
PM   Вверх
IamDreamer
Дата 27.4.2008, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ну вот.

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  __________.rar 264,61 Kb
PM MAIL WWW Jabber   Вверх
THandle
Дата 27.4.2008, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

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



Значит так. Опытным путем удалось установить что в перовм методе сортировки(который "работает") элемент StringGrid.ColCount = -1

А во втором это пустая строка.

Это -1 игнорируется потому что идет следующий код:

Код

for i:=1 to N do
        a[i]:=StrToInt(StringGrid1.Cells[i,1]);


Заметь, именно до N.

А так как StringGrid1.ColCount := N + 1 этот элемент со значением -1 игнорируется.

И вообще.

Col и Row в StringGrid начинаются с нуля!!! А ColCount и RowCount показывают количество элементов. А количество начинается с 1. То есть чтобы получить нормальный цикл нужно писать не to StringGrid.ColCount,а to StringGrid.ColCount - 1.

Замени в обоих случаях свой код на такой:


Код

for i:=1 to StringGrid1.ColCount - 1 do
      if TryStrToInt(StringGrid1.Cells[i, 1], z)=true then
        a[i]:=StrToInt(StringGrid1.Cells[i,1]) else
        begin
          MessageDlg('Массив заполнен неверно.',mtError, [mbOK], 0);
          Exit;
        end;


И все будет работать smile 
PM   Вверх
IamDreamer
Дата 27.4.2008, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо.
PM MAIL WWW Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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