Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/188: Рейтинг темы: голосов - 188, средняя оценка - 4.92
7 / 6 / 5
Регистрация: 08.12.2009
Сообщений: 105
1

Ошибка: Not enough actual parameters

17.01.2010, 21:39. Показов 36296. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
при компиляции выдаёт ошибку "Not enough actual parameters" в функции перед x[i,j], подскажите как исправить
вот код функции
Delphi
1
2
3
4
5
6
function sumstr (x:matrix; i,n:integer):integer;
var j:integer;
begin
  for j:=1 to n do
    sumstr:=sumstr+x[i,j];
end;
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.01.2010, 21:39
Ответы с готовыми решениями:

ошибка Not enough actual parameters
выскакивает ошибка Not enough actual parameters в конце при вызове функции Vopros. Подскажите как...

Ошибка [Error] Unit1.pas(69): Not enough actual parameters
Помогите, пожалуйста, разобраться почему вылетает ошибка Unit1.pas(69): Not enough actual...

E2035 Not enough actual parameters. не могу понять в чем ошибка
не могу понять в чем ошибка Unit1.pas(38): E2035 Not enough actual parameters ...

too many actual parameters
Всем привет. При создание аудиоплеера у меня возникла проблема. При компилировании выдает ошибку: ...

22
1915 / 1065 / 384
Регистрация: 06.12.2008
Сообщений: 2,802
17.01.2010, 21:42 2
Данная фраза говорит о том, что Вы не передаете в функцию соответствующих параметров
представьте весь код
0
7 / 6 / 5
Регистрация: 08.12.2009
Сообщений: 105
17.01.2010, 21:44  [ТС] 3
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
program magic_sqr;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,
  Windows;
type
matrix=array[1..100,1..100] of integer;
 
function sumstr (var x:matrix; i,n:integer):integer;
var j:integer;
begin
  for j:=1 to n do
    sumstr:=sumstr+x[i,j];
end;
var i,j,n:integer;
    matr:matrix;
 
procedure Input (n:integer; var x:matrix);
var i,j:integer;
begin
writeln ('Введите элементы массива');
writeln;
for i:=1 to n do
  for j:=1 to n do
    begin
      write ('a[',i,',',j,'] = ');
      readln (x[i,j]);
      writeln;
    end;
end;
 
procedure Output (n:integer; x:matrix);
var i,j:integer;
begin
  writeln ('Исходная матрица');
  writeln;
    for i:=1 to n do
    begin
      for j:=1 to n do
        write (x[i,j],' ');
        writeln
    end;
end;
 
begin
SetConsoleCP (1251);
SetConsoleOutputCP (1251);
  writeln ('Введите n');
  readln (n);
Input (n, matr);
Output (n, matr);
writeln;
for i:=1 to n do
  writeln (sumstr (matr,i,n,));
readln;
end.
0
1915 / 1065 / 384
Регистрация: 06.12.2008
Сообщений: 2,802
17.01.2010, 22:07 4
еще задание напишите
0
7 / 6 / 5
Регистрация: 08.12.2009
Сообщений: 105
17.01.2010, 22:12  [ТС] 5
уже не надо) разобрался)) заменил на это
Delphi
1
2
3
4
5
6
7
8
function sumstr (x:matrix; i,n:integer):integer;
var j,res:integer;
begin
res:=0;
  for j:=1 to n do
    res:=res+x[i,j];
  sumstr:=res;
end;
0
Тимуровец
445 / 285 / 50
Регистрация: 10.09.2009
Сообщений: 963
17.01.2010, 22:31 6
Правильнее так:
Delphi
1
2
3
4
5
6
7
function sumstr (x:matrix; i,n:integer):integer;
var j: integer;
begin
 Result := 0;
 for j := 1 to n 
 do Result := Result + x[i,j];
end;
0
7 / 6 / 5
Регистрация: 08.12.2009
Сообщений: 105
17.01.2010, 22:43  [ТС] 7
Цитата Сообщение от Страдалецъ Посмотреть сообщение
Правильнее так:
Delphi
1
2
3
4
5
6
7
function sumstr (x:matrix; i,n:integer):integer;
var j: integer;
begin
 Result := 0;
 for j := 1 to n 
 do Result := Result + x[i,j];
end;
просто у нас препод не любит такую запись, с Result'ом))

Добавлено через 3 минуты
Цитата Сообщение от Snoopy Посмотреть сообщение
еще задание напишите
задание: над определить является ли заданная матрица магическим квадратом или нет.

Добавлено через 1 минуту
вот готовый код:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
program magic_sqr;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,
  Windows;
 
type
matrix=array[1..100,1..100] of integer;
 
var i,n:integer;
    matr:matrix;
    IsMagic:boolean;
 
function sumstr (x:matrix; i,n:integer):integer;
var j,res:integer;
begin
res:=0;
  for j:=1 to n do
    res:=res+x[i,j];
  sumstr:=res;
end;
 
function sumcol (x:matrix; j,n:integer):integer;
var i,res:integer;
begin
res:=0;
  for i:=1 to n do
    res:=res+x[i,j];
  sumcol:=res;
end;
 
procedure Input (n:integer; var x:matrix);
var i,j:integer;
begin
writeln;
writeln ('Введите элементы массива');
writeln;
for i:=1 to n do
  for j:=1 to n do
    begin
      write ('a[',i,',',j,'] = ');
      readln (x[i,j]);
      writeln;
    end;
end;
 
procedure Output (n:integer; x:matrix);
var i,j:integer;
begin
  writeln ('Исходная матрица:');
   for i:=1 to n do
    begin
      for j:=1 to n do
        write (x[i,j],' ');
        writeln
    end;
end;
 
begin
SetConsoleCP (1251);
SetConsoleOutputCP (1251);
  writeln ('Введите n');
  readln (n);
Input (n, matr);
Output (n, matr);
writeln;
IsMagic:=false;
for i:=1 to n do
  if sumstr (matr,i,n) = sumcol (matr,i,n) then
    IsMagic:=true
  else break;
if IsMagic then
  writeln ('Квадрат - магический!')
else
  writeln ('Квадрат - не магический!');
readln;
end.
0
Тимуровец
445 / 285 / 50
Регистрация: 10.09.2009
Сообщений: 963
17.01.2010, 22:46 8
Оригинально. Не использовать встроенные средства языка - это не только неправильно, но и вредно. Одно дело - не знать об этом, другое умышленно избегать этого. В результате вырабатывается привычка постоянно изобретать велосипед и сильно увеличивает время написания кода.
0
7 / 6 / 5
Регистрация: 08.12.2009
Сообщений: 105
17.01.2010, 22:47  [ТС] 9
Цитата Сообщение от Страдалецъ Посмотреть сообщение
Оригинально. Не использовать встроенные средства языка - это не только неправильно, но и вредно. Одно дело - не знать об этом, другое умышленно избегать этого. В результате вырабатывается привычка постоянно изобретать велосипед и сильно увеличивает время написания кода.
согласен, но... препод старой закалки и с ней не поспоришь..(
0
Тимуровец
445 / 285 / 50
Регистрация: 10.09.2009
Сообщений: 963
17.01.2010, 22:47 10
Зачем-же вы передаете в качестве параметра массив, если он является у вас глобальной переменной и виден из любой процедуры внутри этого модуля?
0
7 / 6 / 5
Регистрация: 08.12.2009
Сообщений: 105
17.01.2010, 23:00  [ТС] 11
т.е я могу вместо
Delphi
1
2
3
4
5
6
7
8
function sumstr (x:matrix; i,n:integer):integer;
var j,res:integer;
begin
res:=0;
  for j:=1 to n do
    res:=res+x[i,j];
  sumstr:=res;
end;
писать это?

Delphi
1
2
3
4
5
6
7
8
function sumstr (i,n:integer):integer;
var j,res:integer;
begin
res:=0;
  for j:=1 to n do
    res:=res+matr[i,j];
  sumstr:=res;
end;
Добавлено через 8 минут
проверил.. и правда... списал бы на то, что я ток на первом курсе, но я должен был это знать...)

тогда код принимает такой вид:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
program magic_sqr;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,
  Windows;
 
type
matrix=array[1..100,1..100] of integer;
 
var i,n:integer;
    matr:matrix;
    IsMagic:boolean;
 
function sumstr (i,n:integer):integer;
var j,res:integer;
begin
res:=0;
  for j:=1 to n do
    res:=res+matr[i,j];
  sumstr:=res;
end;
 
function sumcol (j,n:integer):integer;
var i,res:integer;
begin
res:=0;
  for i:=1 to n do
    res:=res+matr[i,j];
  sumcol:=res;
end;
 
procedure Input (n:integer);
var i,j:integer;
begin
writeln;
writeln ('Введите элементы массива');
writeln;
for i:=1 to n do
  for j:=1 to n do
    begin
      write ('a[',i,',',j,'] = ');
      readln (matr[i,j]);
      writeln;
    end;
end;
 
procedure Output (n:integer);
var i,j:integer;
begin
  writeln ('Исходная матрица:');
   for i:=1 to n do
    begin
      for j:=1 to n do
        write (matr[i,j],' ');
        writeln
    end;
end;
 
begin
SetConsoleCP (1251);
SetConsoleOutputCP (1251);
  writeln ('Введите n');
  readln (n);
Input (n);
Output (n);
writeln;
IsMagic:=false;
for i:=1 to n do
  if sumstr (i,n) = sumcol (i,n) then
    IsMagic:=true
  else break;
if IsMagic then
  writeln ('Квадрат - магический!')
else
  writeln ('Квадрат - не магический!');
readln;
end.
0
Тимуровец
445 / 285 / 50
Регистрация: 10.09.2009
Сообщений: 963
17.01.2010, 23:07 12
Можете и n тоже по той-же причине исключить из параметров.
0
7 / 6 / 5
Регистрация: 08.12.2009
Сообщений: 105
17.01.2010, 23:12  [ТС] 13
Цитата Сообщение от Страдалецъ Посмотреть сообщение
Можете и n тоже по той-же причине исключить из параметров.
логично... но какие параметры мне тогда передавать в процедуры?
0
Тимуровец
445 / 285 / 50
Регистрация: 10.09.2009
Сообщений: 963
18.01.2010, 00:20 14
Если в этом нет необходимости, то зачем перегружать код?
0
7 / 6 / 5
Регистрация: 08.12.2009
Сообщений: 105
18.01.2010, 11:06  [ТС] 15
требует препод..
0
Тимуровец
445 / 285 / 50
Регистрация: 10.09.2009
Сообщений: 963
18.01.2010, 13:56 16
Тогда перенесите весь Var блок после всех процедур/функций и передавайте в них параметры.
Но это глупо.
0
0 / 0 / 0
Регистрация: 14.05.2011
Сообщений: 3
14.05.2011, 14:45 17
У меня показывает ошибку [Ошибка] Unit2.pas(105): Not enough actual parameters
Что делать уже и не знаю, задание такое у меня происходит импорт данных из DBGrid в Word.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
procedure TForm2.Button6Click(Sender: TObject);
const
  TCount = 3;
 
type
  TRec = record
    FIO: string;
    NaimTem: string;
    NaimFond: string;
  end;
 
var
  T: array[0..TCount] of TRec;
  Nn: Integer;
  i: Integer;
 
begin
  i := 0;
  while not Table1.Eof do
  begin
    T[i].FIO := Table1FIO.AsString;
    T[i].NaimTem := Table1Naimtem.AsString;
    T[i].NaimFond := Table1Naimfond.AsString;
    Table1.Next;
 
  end;
 
  PrintN()
end;/
/ после этого пишет ошибку.
Подскажите что делать?
0
3218 / 2361 / 540
Регистрация: 11.09.2009
Сообщений: 8,604
14.05.2011, 17:06 18
Цитата Сообщение от Оксана68 Посмотреть сообщение
Ошибка Not enough actual parameters
PrintN()
end;// после этого пишет ошибку.
Подскажите что делать?
Общий подход такой:
Смотрите, как объявлена функция или процедура (в вашем случае - PrintN). Параметры вызова в скобках должны быть те же, что в объявлении.
0
0 / 0 / 0
Регистрация: 14.05.2011
Сообщений: 3
14.05.2011, 17:08 19
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
procedure PrintN(DDE1: TDdeClientConv; Data: TData);
 
implementation
 
procedure PrintN;
var
  S: string;
  i: integer;
  Sum: double;  // итоговая сумма
  Tv, Ss: PChar;
  Nn: Integer;
begin
 S:=GetCurrentDir+'\Накладная.doc'; { имя открываемого документа }
 DDE1.OpenLink; { устанавливаем связь }
 Tv:=StrAlloc(20000); Ss:=StrAlloc(300); { выделяем память }
  { даем команду открыть документ и установить курсор в начало документа }
 StrPCopy(Tv, '[FileOpen "'+S+'"][StartOfDocument]');
// S := NNakl.Text; { номер накладной }
  { записываем в позицию Num номер накладной }
 StrCat(Tv, StrPCopy(SS, '[EditBookmark .Name = "Num", .Goto][Insert "'+S+'"]'+
 '[EditBookmark .Name = "Table", .Goto]')); { и переходим к заполнению таблицы }
  { передаем данные в Word }
 if not DDE1.ExecuteMacro(Tv, false) then
   begin { сообщаем об ошибке и выход }
    MessageDlg('Ошибка связи с Microsoft Word.', mtError, [mbOk], 0);
    StrDispose(Tv); StrDispose(Ss);
    exit;
   end;
ЧТо именно из этого должно быть написано?

 Комментарий модератора 
Сообщение изменено модератором.
Для кода программ есть специальные теги в редакторе сообщений.
0
3218 / 2361 / 540
Регистрация: 11.09.2009
Сообщений: 8,604
14.05.2011, 17:17 20
Объявлено:
procedure PrintN(DDE1: TDdeClientConv; Data: TData);

При вызове процедуре должны быть переданы два параметра:
DDE1 типа TDdeClientConv
Data типа TData

Например, так:

Delphi
1
2
3
4
5
6
7
var
Param1: TDdeClientConv;
Param2: TData;
...
Param1:= ...;
Param2:= ...;
PrintN(Param1, Param2);
0
14.05.2011, 17:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.05.2011, 17:17
Помогаю со студенческими работами здесь

Not enough actual parameters
выдает ошибку Unit1.pas(38): Not enough actual parameters к строке...

Too many actual parameters
unit Unit2; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils,...

Ошибка в ADOQuery: Type mismatch for field 'phisical_io', expecting: LargeInt actual: BCD
Товарищи ситуация такая: есть стандартная ADOQuery, которая забирает данные из поля bigint,...

Not enough actual parameters - ошибка
При компиляции unit Main; interface uses Windows, Messages, SysUtils, Variants, Classes,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru