У меня есть следующие функции, которые, как предполагается разбить строку на массив строк (я использую Geany IDE и FPC компилятор):идентификатор типа ожидается ошибка FPC компилятор
function Split(const str: string; const separator: string): array of string;
var
i, n: integer;
strline, strfield: string;
begin
n:= Occurs(str, separator);
SetLength(Result, n + 1);
i := 0;
strline:= str;
repeat
if Pos(separator, strline) > 0 then
begin
strfield:= Copy(strline, 1, Pos(separator, strline) - 1);
strline:= Copy(strline, Pos(separator, strline) + 1,
Length(strline) - pos(separator,strline));
end
else
begin
strfield:= strline;
strline:= '';
end;
Result[i]:= strfield;
Inc(i);
until strline= '';
if Result[High(Result)] = '' then SetLength(Result, Length(Result) -1);
end;
компилятор выдает сообщение об ошибке:
calc.pas(24,61) Error: Type identifier expected
calc.pas(24,61) Fatal: Syntax error, ";" expected but "ARRAY" found
Насколько я понимаю, синтаксис верен, в чем проблема?
Компилятор сообщает вам, что вы не можете вернуть нетипизированный динамический массив. Объявить f.i. 'type TStringArray = массив строки;' и вы можете вернуть 'TStringArray' из функции. –
ah thx, опубликуйте это как ответ, и я приму это. Паскаль кажется довольно странным после лет java>< – Droidman
Готово, и вы можете. Но, пожалуйста, просмотрите свой вопрос в течение некоторого времени, так как я действительно не знаю, зависит ли это поведение от определенного «режима». Если это так, кто-то может предоставить расширенный ответ. –