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

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 09.10.2011, 11:47   #1
Fri
Пользователь
 
Регистрация: 24.04.2011
Сообщений: 26
Репутация: 10
Вопрос Выдаёт ошибку "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, 11:55   #2
Вадим Мошев

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

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

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

Вадим Мошев, ну, Вы чуть-чуть заблуждаетесь. можно писать и так и так.
проверьте у себя, если есть сомнения.
такой код АБСОЛЮТНО нормален и допустим:
Код:
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, 12:14   #5
JUDAS
фонатик DELPHI
Участник клуба
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Адрес: Украина
Сообщений: 708
Репутация: 184
По умолчанию

От перестановки половых органов процесс не поменяется
Цитата:
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 в 12:17.
JUDAS вне форума   Ответить с цитированием
Старый 09.10.2011, 12:20   #6
Fri
Пользователь
 
Регистрация: 24.04.2011
Сообщений: 26
Репутация: 10
По умолчанию

Цитата:
я имею в виду, что размеры 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 в 12:23.
Fri вне форума   Ответить с цитированием
Старый 09.10.2011, 12:29   #7
JUDAS
фонатик DELPHI
Участник клуба
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Адрес: Украина
Сообщений: 708
Репутация: 184
По умолчанию

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

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

Опции темы

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

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

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

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


00:05.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.