Вопрос № 100452: Hi эксперты...
Как передать в функцию двумерный массив типа string...
пишу так:
function foo(var s: array[100] of string): word;
begin
s[0]:= 'la-la-la';
s[1]:= 'tra-la-la';
...
result:= 0;
end;
Н...
Вопрос № 100.452
Hi эксперты...
Как передать в функцию двумерный массив типа string...
пишу так:
function foo(var s: array[100] of string): word;
begin
s[0]:= 'la-la-la';
s[1]:= 'tra-la-la';
...
result:= 0;
end;
Не понимаю почему компилятор(turbo pascal) выдает ошибку в заголовке функции...
Вообше, как вы уже поняли, мне нужен список, который я бы передовал этой функции и в ней его заполнял...есть другие варианты?
Отправлен: 01.09.2007, 16:49
Вопрос задал: Ragnarog (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Coupler
Здравствуйте, Ragnarog!
Нужно объявить тип массива, который Вы хотите передать в функцию, через type. Исправленный вариант в приложении.
Приложение:
Ответ отправил: Coupler (статус: Практикант)
Ответ отправлен: 01.09.2007, 16:55
Отвечает: Багиев Александр
Здравствуйте, Ragnarog!
Просто запрещено в качестве параметра передавать массив.
Зато можно создать новый тип на основе массива и использовать его в качестве типа параметра:
Приложение:
Ответ отправил: Багиев Александр (статус: 1-ый класс)
Ответ отправлен: 01.09.2007, 21:01
Отвечает: Дмитрий С.
Здравствуйте, Ragnarog!
вы неправильно задали массив - поэтому он и ругается. правильнее будет так:
function foo(var s: array[1..100] of string): word;
а при обращении к массиву - тоже возможна "нецензурщина" :) :
s[0]:= 'la-la-la';
в данном случае - у Вас нет элемента №0. Следует обращаться к первому..сотому
--------- Наши программисты самые программистые программисты!..
Ответ отправил: Дмитрий С. (статус: 3-ий класс)
Ответ отправлен: 03.09.2007, 15:44
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Ragnarog!
У Вас компилятор выдает ошибки "ожидается идентификатор типа" или "предполагается OF".
Все дело в синтаксисе Паскаля: Заголовок процедуры или функции может содержать список формальных параметров, например так: (параметры; параметры; ... параметры). Каждая группа параметров может быть записана в одной из следующих форм: идентификатор, идентификатор : тип { Список параметров - значений }
Var идентификатор, идентификатор : тип { Список переменных параметров }
Другими словами в заголовке функции должен быть указан один из стандартных(integer, boolean,char,real и т.д.) или объявленных пользователем типов. Тип пользователя можно объявить в секции Type программы. Type myType=s: array[1..100] of string;
и использовать его: function foo(var s:myType): word;
В данном случае компилятор ругается на присутствие зарезервированного слова ARRAY в заголовке функции. Ошибка будет появлятся и при использовании других зарезервированных слов: RECORD или SET.
Удачи!
--------- И только наступив на грабли мы приобретаем драгоценный опыт!