Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22

Ошибка при компиляции кода с процедурой, имеющей переменное число параметров

06.08.2018, 11:56. Показов 986. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Pascal
1
2
3
4
5
6
7
procedure P0(params a: array of byte) := exit;
procedure P1(b: byte; params a: array of byte) := exit;
 
begin
  P0();
  P1(0);  //Program2.pas(6) : Wrong number of procedure parameters
end.
Воспроизводится в версии 3.4, сборке 1723. У кого в каких еще версиях данной среды воспроизводится этот баг?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.08.2018, 11:56
Ответы с готовыми решениями:

Переменное число параметров
Здравствуйте, начал изучать Python, как прошла неделя уже), скачал книгу "Укус питона", очень доходчивая книжка, но вот не до конца...

QStringList в переменное число параметров
Прошу показать как объявить метод с переменным числом параметров типа QStringList, и как перемещаться по этим параметрам?

Переменное число параметров шаблона
Здоровеньки булы. Не уверен, что название темы точно отражает суть вопроса. Есть заготовка шаблонного делегата, параметры которого -...

9
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
06.08.2018, 15:51
Это не баг!
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
function Sum(k:integer;params a: array of integer): integer; 
begin 
  Result := k; 
  for i: integer := 0 to a.Length-1 do 
    Inc(Result,a[i]); 
end; 
//При вызове подпрограммы на месте формального параметра params может быть любое
// НЕНУЛЕВОЕ количество фактических параметров совместимого типа, перечисляемых через запятую:
begin
var s: integer := Sum(100,2,3,4,5);
writeln(s);
end.
0
Заблокирован
06.08.2018, 18:39
Соколиный глаз, покопался на просторах инета и нашел это. Разработчики сочли это багом. Достаточно странно, ведь, с тем, что сказала справка, это расходится:
При вызове подпрограммы на месте формального параметра params может быть любое ненулевое количество фактических параметров совместимого типа, перечисляемых через запятую
0
 Аватар для kotAV
142 / 108 / 57
Регистрация: 15.09.2017
Сообщений: 425
06.08.2018, 21:11
Цитата Сообщение от Соколиный глаз Посмотреть сообщение
У кого в каких еще версиях данной среды воспроизводится этот баг?
Соколиный глаз, Program1.pas(6) : Неверное число параметров процедуры
3.2, сборка 1514 (11.08.17)
0
Aimez-vous les baguettes?
193 / 26 / 27
Регистрация: 25.10.2017
Сообщений: 165
07.08.2018, 07:41
Цитата Сообщение от Joy Посмотреть сообщение
Это не баг!
Цитата Сообщение от Стив Роджерс Посмотреть сообщение
Разработчики сочли это багом.

Не по теме:


Мне уже не стоит говорить о понятии "авторитетность" на форуме :)
Тут и так, к сожалению, всё видно.

0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
07.08.2018, 21:19
Все интереснее и интереснее. В Шарпе, с которого снимается калька в виде PABC.NET, для params написано:
You can send a comma-separated list of arguments of the type specified in the parameter declaration or an array of arguments of the specified type. You also can send no arguments.
Судя по обсуждениям на гитхабе, ошибка в документации, и подразумевается, что нулевое количество параметров передавать можно?
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
08.08.2018, 10:31  [ТС]
volvo, да. Только не понятно почему об этом только сейчас вспомнили.
0
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
08.08.2018, 15:48
я бы оставил как есть: если в параметрах, только params, то допускается без параметров, а если переменная и params, то не допускается. и корректно бы это написал в справке, и ошибку в примере поправил(-1 пропущено) a.length-1 должно быть.
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
08.08.2018, 15:51  [ТС]
Joy, чисто из интереса, почему Вы так:
Цитата Сообщение от Joy Посмотреть сообщение
если в параметрах, только params, то допускается без параметров, а если переменная и params, то не допускается
считаете?
0
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
08.08.2018, 17:26
В силу ограниченности своих познаний, не вижу необходимости применения в паскале такого функционала.

Добавлено через 1 минуту
На мой взгляд это ухудшает восприятие кода и дает возможность наделать "сложных" ошибок
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.08.2018, 17:26
Помогаю со студенческими работами здесь

Переменное число параметров функции - трабл с int
Функция - выводит среднее арифметическое своих аргументов. Рабочий пример с double: #include <cstdarg> #include <iostream> ...

Как передать в функцию переменное число параметров
Приветствую... вопрос есть положим есть функция: UART0printf(const char *fmt, ...) которая формирует строку и выводит ее в...

Как передать переменное число параметров в хранимую процедуру?
Уважаемые, Может кто знает как передать переменное колличество параметров в хранимую процедуру на MS SQL Server 2000? Тип параметров один...

Ошибка при компиляции в CodeBlock, синтаксис для параметров функции
modmath.c #include "modpath.h" #include "randomer.h" //a^(2^i) mod n static rnd_int mod_pow2i(rnd_int a; rnd_int i; rnd_int n); ...

Ошибка при компиляции кода
не могу понять в чем ошибка при компиляции этого кода: #include <unistd.h> #include <stdlib.h> #include <assert.h> ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru