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

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 09.10.2011, 10:47   #1
Fri
Пользователь
 
Регистрация: 24.04.2011
Сообщений: 26
Вопрос Выдаёт ошибку "Not enough actual parameters" в Borland delphi

Добрый день. При компиляции кода, выдаёт ошибку Not enough actual parameters. Хочу просто посчитать кол-во отрицательных элементов в первой строке с помощью процедуры.
Код:
 type
    matr=array[1..6,1..5] of Integer;
    var
      k,i,j:Integer;
      n,m:Integer;
      A:matr;
      procedure KOL (n,m:Integer; A:matr; var k:Integer); // процедура подсчёта кол-ва отриц. эл-ов в первой строке.

    var j:Integer;
       begin
      k:=0;
      for j:=1 to m do
      if A[1][j]<0 then
      k:=k+1;
      end;
begin
  n:=StrToInt(Edit1.Text);
  m:=StrToInt(Edit2.Text);

for i:=1 to n do
  for j:=1 to m do
  A[i][j]:=StrToInt(StringGrid1.Cells[j][i]); // На эту строку ругается
  KOL(n,m,A,k);
   Label2.Caption:=IntToStr(k);


end;

end.
Fri вне форума Ответить с цитированием
Старый 09.10.2011, 10:55   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,590
По умолчанию

Ну, во-первых, вы неверно обращаетесь к массиву (матрице).
Если у вас матрица объявлена вот так:
Код:
matr=array[1..6,1..5] of Integer;
//........
A:matr;
То обращатиься к ней надо вот так:
Код:
A[i, j]
А не так:
Код:
A[i][j]
Вадим Мошев вне форума Ответить с цитированием
Старый 09.10.2011, 11:05   #3
Fri
Пользователь
 
Регистрация: 24.04.2011
Сообщений: 26
По умолчанию

Хм..до этого обращался к матрице
Код:
A[i][j]
всё было нормально, а тут наверн не хочет из-за прямоугольной матрицы наверн). Вообщем я изменил обращение к матрице. Да он программу запускает, но при подсчёте пишет ошибку "is not a valid integer value". Странно у меня же переменные правильно по типу распределены...
Fri вне форума Ответить с цитированием
Старый 09.10.2011, 11:13   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,260
По умолчанию

Вадим Мошев, ну, Вы чуть-чуть заблуждаетесь. можно писать и так и так.
проверьте у себя, если есть сомнения.
такой код АБСОЛЮТНО нормален и допустим:
Код:
type matr=array[1..6,1..5] of Integer;
var A:matr;
 i, j : integer;
begin
 for i:=1 to 6 do
   for j:=1 to 5 do
     A[i][j]:=i*100+j;

 for i:=1 to 6 do begin
   for j:=1 to 5 do
     Write(A[i][j]:7);
   writeln;
 end;
 readln;    
end.
____________________


Fri
но Вадим Мошев прав, ошибка кроется как раз в такой записи индексов.
К массиву так можно обращаться, а вот к StringGrid.Cells - НЕЛЬЗЯ!

поэтому исправьте строчку кода на такую:
Код:
A[i][j]:=StrToInt(StringGrid1.Cells[j,i]);
или такую
Код:
A[i,j]:=StrToInt(StringGrid1.Cells[j,i]);
какая Вам нравится больше...


p.s. про другие возможные ошибки я уже молчу... (может быть, их и нет, ведь целиком код не представлен. я имею в виду, что размеры n и m берутся из Edit'ов. Но в стринггриде может не быть столько столбцов/строк...
или в стрингриде могут быть НЕ ЧИСЛОВЫЕ значения (пустые строки, например...))
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.10.2011, 11:14   #5
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 711
По умолчанию

От перестановки половых органов процесс не поменяется
Цитата:
A[i, j] & A[i][j]
А вот в случае с StringGrid1.Cells[j,i] , с Вадим Мошевым согласен!
В обьявлении написано:
Код:
  property Cells[ACol, ARow: Integer]: string read GetCells write SetCells;
так зачем же изобретать велосипед и вставлять туда отсебятину )))
------
[QUOTE]p.s. про другие возможные ошибки ... Но в стринггриде может не быть столько столбцов/строк ..../QUOTE]
в добавок к посту Сергея, стринггрид может быть вообще не заполненным или заполненным частично, и первая подобная ячейка вызовет в строке A[i][j]:=StrToInt(StringGrid1.Cells[j,i]); ошибку типо " '' - invalid integer value "
95% сбоев и ошибок приложений, находится в полу метрах от монитора

Последний раз редактировалось JUDAS; 09.10.2011 в 11:17.
JUDAS вне форума Ответить с цитированием
Старый 09.10.2011, 11:20   #6
Fri
Пользователь
 
Регистрация: 24.04.2011
Сообщений: 26
По умолчанию

Цитата:
я имею в виду, что размеры n и m берутся из Edit'ов. Но в стринггриде может не быть столько столбцов/строк...
Ммм.. в опциях стрингриде я написал ColCount:6 , а RowCount:5.
В едит N я ввожу 6, а в едит M я ввожу 5. Может надо добавить в код такое:
Код:
StringGrid1.ColCount:=n+1; StringGrid1.RowCount:=m+1;

---------------------

Всё равно пишет ошибку "is not a valid integer value

Последний раз редактировалось Fri; 09.10.2011 в 11:23.
Fri вне форума Ответить с цитированием
Старый 09.10.2011, 11:29   #7
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 711
По умолчанию

Цитата:
Всё равно пишет ошибку "is not a valid integer value
Попробуйте через StrToIntDef(Trim(StringGrid1.Cells[j,i]),-11111);
в таком случае, если будет пустая ячейка или вместо числа "вася" элемент массива будет содержать -11111. Это значение условно-ошибочное. Оно может встречатся пари вводе. Я использую данный метод тогда, когда моё псевдошибочное значение не может встречатся в секторе решаемой задачи (например для высоты рельефа -400...8848 спокойно пожно писать -10000)
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 09.10.2011, 15:43   #8
Fri
Пользователь
 
Регистрация: 24.04.2011
Сообщений: 26
По умолчанию

JUDAS, спасибо
Код:
StrToIntDef(Trim(StringGrid1.Cells[j,i]),-11111);
помогло. Теперь могу ост. часть задачи делать.
Fri вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi. Программа взаимодействия с MS Word выдаёт ошибку "сервер RPC недоступен" CAID Помощь студентам 0 20.04.2011 12:11
ошибка Not enough actual parameters veram Софт 1 13.10.2010 09:51
мой конструктор класса Delphi - [Error] Unit1.pas(64): Not enough actual parameters Terrance! Помощь студентам 1 21.09.2010 12:16
Выдаёт ошибку!"Warning: mysql_result() [function.mysql-result" djsliva PHP 2 24.01.2010 15:27
Not enough actual parameters ZhekON Общие вопросы Delphi 7 01.02.2007 15:26


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS