我有以下函数,它应该将字符串拆分为字符串数组(我使用的是Geany IDE和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
据我所知,语法是正确的,这里有什么问题?
答案 0 :(得分:3)
编译器告诉您无法返回无类型的动态数组。你可以申报f.i.
type TStringArray = array of string;
你可以从函数中返回TStringArray
。请注意,声明为TStringArray
的变量与类似声明但类型不同的数组不兼容,例如type TOtherStringArray = array of string
。