Показать сообщение отдельно
  #5  
Старый 14.02.2021, 14:15
Katerina1993 Katerina1993 вне форума
Прохожий
 
Регистрация: 22.09.2018
Сообщения: 11
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

У меня тут пример есть, который тоже не работает выдает ошибку. Как нибудь массивы можно сделать по 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;
Ответить с цитированием