У меня тут пример есть, который тоже не работает выдает ошибку. Как нибудь массивы можно сделать по delphi 7, так как здесь тоже есть TArray<TypeString>?
Код:
var
Str: PWideChar;
begin
Str := '"T My \" " x'; // 11
ShowMessage(Test(Str[0], Length(Str), 0).ToString);
end;
Код:
function Test(var Buffer; BufferLen, Offset: Cardinal): Integer;
type
TypeString = char;
var
CurrentByte: TypeString;
CurrentLen: Cardinal;
SkipDoubleQuotes: Boolean;
begin
SkipDoubleQuotes := false;
CurrentLen := Offset;
while CurrentLen <= BufferLen do
begin
CurrentByte := TArray<TypeString>(@Buffer)[CurrentLen];
inc(CurrentLen);
if SkipDoubleQuotes then
begin
case CurrentByte of
'"', '''':
begin
if TArray<TypeString>(@Buffer)[CurrentLen - 2] = '\' then
Continue;
SkipDoubleQuotes := false;
end;
end;
end
else
case CurrentByte of
#9, #10, #13, #32:
exit(CurrentLen);
'"', '''':
SkipDoubleQuotes := true;
end;
end;
exit(-1);
end;