类型标识符期望fpc编译器错误

时间:2013-10-04 14:01:20

标签: pascal fpc

我有以下函数,它应该将字符串拆分为字符串数组(我使用的是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

据我所知,语法是正确的,这里有什么问题?

1 个答案:

答案 0 :(得分:3)

编译器告诉您无法返回无类型的动态数组。你可以申报f.i.

type TStringArray = array of string; 

你可以从函数中返回TStringArray。请注意,声明为TStringArray的变量与类似声明但类型不同的数组不兼容,例如type TOtherStringArray = array of string