Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Технологии > Помощь студентам
Регистрация

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

Ответ
 
Опции темы
Старый 17.12.2013, 05:18   #1
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Адрес: Культурный центр Беларуси
Сообщений: 352
Репутация: 125
По умолчанию Помогите найти ошибку - StrToFloat выдаёт ошибку EConvertError для ячеек StringGrid (Delphi)

Доброго времени суток.
Объясните, почему ругается на "Проект Project1.exe возникло исключение класса EConvertError с сообщением " " не является допустимым с плавающей запятой"
Код:

StringGrid2.ColCount := StrToInt(Edit1.Text);

 for j := 0 to StringGrid1.RowCount do //строки
 begin
  min := StrToFloat(StringGrid1.Cells[0, j]);

  for I := 1 to StringGrid1.ColCount do //столбцы
   if StrToFloat(StringGrid1.Cells[i, j]) < min then
    min := StrToFloat(StringGrid1.Cells[i, j]);

   StringGrid2.Cells[j, 0] := FloatToStr(min);
   StringGrid2.Cells[j, 1] := IntToStr(j);
 end;

__________________
Талепатор можно не включать. Работаю только в Делфи... хотя уже, ещё и в C.
UPD: ещё и в Java xD
В каждом из нас спит гений, и с каждым днём всё крепче
Artsiom вне форума   Ответить с цитированием
Старый 17.12.2013, 08:43   #2
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Адрес: Культурный центр Беларуси
Сообщений: 352
Репутация: 125
По умолчанию

Все ячейки заполнены цифрами. Типа как в SQL, null ни где не присутствует.
__________________
Талепатор можно не включать. Работаю только в Делфи... хотя уже, ещё и в C.
UPD: ещё и в Java xD
В каждом из нас спит гений, и с каждым днём всё крепче
Artsiom вне форума   Ответить с цитированием
Старый 17.12.2013, 09:04   #3
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,057
Репутация: 5241
По умолчанию

Цитата:
Все ячейки заполнены цифрами. Типа как в SQL, null ни где не присутствует.
во-первых, при чём здесь null ?!
ваш код натыкается на ПУСТУЮ ячейку (т.е. ячейку, в которой находится ПУСТАЯ строка)

во-вторых,
Цитата:
Все ячейки заполнены цифрами.
- не верю! (с) Станиславский! (для примера, 50-я ячейка в 100-м столбце точно содержит число?!

для начала циклы крутите правильно:
Код:

 for j := 0 to StringGrid1.RowCount-1 do //строки
 begin
  min := StrToFloat(StringGrid1.Cells[0, j]);

  for I := 1 to StringGrid1.ColCount-1 do //столбцы

Serge_Bliznykov вне форума   Ответить с цитированием
Старый 18.12.2013, 02:39   #4
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Адрес: Культурный центр Беларуси
Сообщений: 352
Репутация: 125
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
во-вторых, - не верю! (с) Станиславский! (для примера, 50-я ячейка в 100-м столбце точно содержит число?!
[/CODE]
Эм, я не задавал массива больше чем 4х4. От куда там может взяться 100 столбец?
__________________
Талепатор можно не включать. Работаю только в Делфи... хотя уже, ещё и в C.
UPD: ещё и в Java xD
В каждом из нас спит гений, и с каждым днём всё крепче
Artsiom вне форума   Ответить с цитированием
Старый 18.12.2013, 08:40   #5
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,057
Репутация: 5241
По умолчанию

Цитата:
Сообщение от Artsiom Посмотреть сообщение
Эм, я не задавал массива больше чем 4х4. От куда там может взяться 100 столбец?
Вам хочется это обсудить этот вопрос?

ОК.
Это ответ на ваше замечание:
Цитата:
Все ячейки заполнены цифрами.
я и пытаюсь донести до Вас, что у Вас НЕ ВСЕ ячейки заполнены цифрами (точнее числами).

Для понимания сего факта напишите у себя примерно такой код:
Код:

var s : string;
begin
  s := StringGrid1.Cells[99, 49];

А теперь вопрос Вам - что сделает данный код и чему будет равная строковая переменная s после выполнения данного кода?!

p.s. это всё лирика! Вы видели, где Вы ошибку в коде допустили (я выделил исправления)? Всё работает?!

Последний раз редактировалось Serge_Bliznykov; 18.12.2013 в 08:44.
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 18.12.2013, 10:42   #6
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,957
Репутация: 6832
По умолчанию

Вот как надо в таких спорных случаях:
Код:

 
var k:integer;
...
for j := 0 to StringGrid1.RowCount do //строки
 begin
  min := StrToFloat(StringGrid1.Cells[0, j]);

  for I := 1 to StringGrid1.ColCount do //столбцы
   if TryStrToFloat(StringGrid1.Cells[i, j],k)  then begin
    if k<min then min:=k;
  end else ShowMessage('В ячейке '+StringGrid1.Cells[i, j]+' не целое');

   StringGrid2.Cells[j, 0] := FloatToStr(min);
   StringGrid2.Cells[j, 1] := IntToStr(j);
 end;

Тогда будет ясно где ошибся.
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 18.12.2013, 11:57   #7
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,057
Репутация: 5241
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Вот как надо в таких спорных случаях:
Код:

 
for j := 0 to StringGrid1.RowCount do //строки
....
  for I := 1 to StringGrid1.ColCount do //столбцы
....
   .... ShowMessage('В ячейке '+StringGrid1.Cells[i, j]+' не целое');

Тогда будет ясно где ошибся.
во-первых, почему "не целое" ? Не вещественное.

во-вторых, ничего не будет ясно.

Выдаст код "В ячейке не целое ", и что это даст?!
То, что там пустая строка, и к Ванге не ходи, я и так это скажу!

Но даже если добавить в это сообщение выдачу I и J это всё равно вряд ли сразу поможет TC.
Ибо нумерация строк/столбцов идёт от нуля.
Допустим, RowCount = 4 (четыре строки) выдаёт, что в ячейке
с номером столбца 1 и строкой 4 не число. И что? На самом деле, строки заполнены только нулевая, первая, вторая и третья. Но TC то считает, что у него с 1-й по 4-ю заполнены!!

p.s. я выше выложил исправленный код. Зачем проверять ЗАВЕДОМО ОШИБОЧНЫЙ код?!
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 18.12.2013, 12:15   #8
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,957
Репутация: 6832
По умолчанию

Цитата:
Выдаст код "В ячейке не целое ", и что это даст?!
Это даст возможность выяснить в какой ячейке нечисло.
Я проверяюсь именно так если проявляется необходимость.
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 18.12.2013, 13:07   #9
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,057
Репутация: 5241
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Это даст возможность выяснить в какой ячейке нечисло.
каким образом это даст выяснить в КАКОЙ ячейке не число ?!
Может быть, Вы это смотрите в отладчике.
Или в тексте сообщения выводите индексы ячейки.
Но в данном примере кода индексы у Вас не выводятся.
Кроме самого сообщения, никакой другой информации не будет отображено!
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 18.12.2013, 13:31   #10
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,957
Репутация: 6832
По умолчанию

Цитата:
Но в данном примере кода индексы у Вас не выводятся.
Потому что это всего лишь подсказка )
Ничего не мешает там автору написать вывод координат. Мне просто было лень так расписывать. Основной намек - проверка на число путем попытки перевода и обработка ошибки перевода. А как автор этим распорядится не мое дело.
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Ответ

Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выдаёт ошибку: acos DOMAIN error,полсе нажатия окей,ещё одну ошибку pow OWERFLAW ERROR prikolist Общие вопросы C/C++ 4 10.04.2009 20:27
Помогите найти ошибку..в программе..учебник Delphi для начинающих LightofMagic Общие вопросы Delphi 6 26.02.2009 02:20
Помогите найти ошибку (Delphi) Армана Помощь студентам 7 24.11.2008 00:01
Помогите найти ошибку (Delphi) Rigard Помощь студентам 4 23.07.2008 03:06


09:54.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru