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

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

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

Ответ
 
Опции темы
Старый 06.10.2012, 19:07   #1
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Адрес: г.Киев, Украина.
Сообщений: 376
Репутация: 50

skype: polymorph91
По умолчанию "" Is not valid integer value.

Доброго времени суток. Требуется помощь. Нужно чтобы кто-то по свежему подкинул мысль, в чём же может быть проблема.
Если кратко то, по нажатию кнопки
Код:

Button2Click

я получаю матрицу ( не заполненную ) необходимых мне размеров и пронумерованную в фиксированных столбцах.
Ввод элементов осуществляется непосредственно в матрицу.
После ввода по нажатию клавиши
Код:

Button3Click

осуществляется реализованный алгоритм ... но по большей части он осуществляется для квадратных матриц, если же ввожу NxM матрицу то постоянно выбивает ошибку "" Is not valid integer value.
У меня отсюда возникает логический вопрос что я не ввёл? Или может я не так матрицу задал ... собственно сижу ломаю голову.

На заметку:
Когда мне выбивает матрицу то она получается именно тех размеров которых надо, заполняется тоже без проблем, а вот когда нажимаю кнопку то сразу выбрасывает ошибку.

Код:

procedure TForm1.Button2Click(Sender: TObject);
var
 i, j, rows, columns: integer;
begin
  rows:=StrToInt(Edit1.Text);
  columns:=StrToInt(Edit2.Text);
  StringGrid1.RowCount:=rows+1;
  StringGrid1.ColCount:=columns+1;

  for i := 0 to StringGrid1.ColCount do StringGrid1.Cells[i,0]:=IntTostr(i);
    for i := 0 to StringGrid1.RowCount do StringGrid1.Cells[0,i]:=IntTostr(i);

  if (Edit1.Text<>' ') and (Edit2.Text<>' ') then StringGrid1.Visible:=true else
  StringGrid1.Visible:=False;

end;

...
procedure TForm1.Button3Click(Sender: TObject);
var
....
begin

k:=StrToInt(Edit3.Text);
rows:=StrToInt(Edit1.Text);
columns:=StrToInt(Edit2.Text);
StringGrid1.RowCount:=rows+1;
Stringgrid1.ColCount:=columns+1;

     for i := 1 to StringGrid1.RowCount-1 do
        for j := 1 to StringGrid1.ColCount-1 do
           a[i,j]:=StrToInt(StringGrid1.Cells[i,j]);

str:=1;
  for j:=1 to columns do vector_A[j]:=a[str,j];

 Memo1.Lines.Add(' ');
 for j:=1 to columns do
     Memo1.lines.Add(IntToStr(vector_A[j]));

 max_a:=vector_A[1];index_a:=1;
 for j:=1 to columns do begin
     if Vector_A[j] > max_a then index_a:=j;
 end;

 for i:=1 to rows do vector_B[i]:=a[i,index_a];

Заранее благодарен за помощь.
__________________
Люблю на ты.Я человек простой
Leshii вне форума   Ответить с цитированием
Старый 06.10.2012, 19:18   #2
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,957
Репутация: 6832
По умолчанию

А ты не хочешь самостоятельно путем пошаговки понять где на каком операторе получается ошибка и почему?
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 06.10.2012, 19:21   #3
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 17,467
Репутация: 6178
По умолчанию

Код:

  for i := 0 to StringGrid1.ColCount do StringGrid1.Cells[i,0]:=IntTostr(i);
    for i := 0 to StringGrid1.RowCount do StringGrid1.Cells[0,i]:=IntTostr(i);

1. Циклы должны быть до ColCount-1 и RowCount-1
2. 1-ый цикл заполняет все ячейки первой строки
3. 2-ой - все ячейки первого столбца
Код:

 a[i,j]:=StrToInt(StringGrid1.Cells[i,j]);

допустим i=2 и j=2. Ячейка не заполнена. StrToInt завершится аварийно

И Stilet прав, пошаговая трассировочка уже давно бы прояснила ситуацию
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар на форуме   Ответить с цитированием
Старый 06.10.2012, 19:27   #4
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Адрес: г.Киев, Украина.
Сообщений: 376
Репутация: 50

skype: polymorph91
По умолчанию

Трассировал, но ни намёка на ошибку
Уже где-то с третьей попытки заметил что программа что то продолжает присваивать, но там были пустые значения.

Я извиняюсь что забыл про это написать.

-------

Пробежался ещё раз трассировкой, получилсась ерунда.
то есть ввожу скажем матрицу 3х2

3 9
9 2
9 6

По результатам трассировки
оно мне просматривает элементы
11 12 13 14
24
21 22 23 24
34
31
( выше указаны индексы )
Теперь задаюсь вопросом что же надо изменить.
__________________
Люблю на ты.Я человек простой

Последний раз редактировалось Leshii; 06.10.2012 в 19:53. Причина: Данные по трассировке.
Leshii вне форума   Ответить с цитированием
Старый 06.10.2012, 20:12   #5
Человек_Борща
Модератор
Заслуженный модератор
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Адрес: Республика Беларусь, г. Минск
Сообщений: 11,386
Репутация: 2669

skype: arhangelsoft
По умолчанию

StrToIntDef используй и не парься.
Человек_Борща вне форума   Ответить с цитированием
Старый 08.10.2012, 09:53   #6
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 23,600
Репутация: 5213
По умолчанию

Цитата:
Код:

     for i := 1 to StringGrid1.RowCount-1 do
        for j := 1 to StringGrid1.ColCount-1 do
           a[i,j]:=StrToInt(StringGrid1.Cells[i,j]);

Вы явно забыли о том, что в этом идиотском StringGrid первый индекс - это номер столбца, второй - номер строки. А у Вас наоборот.
попробуйте так:
Код:

     for i := 1 to StringGrid1.RowCount-1 do
        for j := 1 to StringGrid1.ColCount-1 do
           a[i,j]:=StrToInt(StringGrid1.Cells[ j, i ]);

Serge_Bliznykov вне форума   Ответить с цитированием
Ответ

Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка "Expecting a valid name" для оператора "<" в JScript Ратибор Редоран JavaScript, Ajax 0 15.12.2011 14:38
" is not valid integer value. Stringgrid в массив midletarket Помощь студентам 1 14.12.2010 15:34
Периодически выскакивает ошибка "not valid integer value" Dux Общие вопросы Delphi 11 07.10.2010 18:37
Ошибка(оконная а не компилятора) "is not a valid integer value" sinobithug Помощь студентам 6 14.08.2010 22:49
GetTickCount, ошибка "is not a valid integer value" Zeraim Общие вопросы Delphi 3 26.01.2010 20:11


09:11.


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

RusProfile.ru


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