Я получаю синтаксическую ошибку «двоеточие (:) ожидаемое» для этого кода (строка 14; столбец 10) и Я в недоумении. Этот код работает в компиляторе Inno Setup, он похож на Delphi, но я не думаю, что он полный Delphi.«двоеточие (':') ожидается« ошибка компилятора в диапазоне символов в заявлении case в скрипте Inno Setup Pascal-скрипт
Версия Inno Setup - 5.5.9 (a), поэтому версия Ansi.
procedure HexToBin(const Hex: string; Stream: TStream);
var
B: Byte;
C: Char;
Idx, Len: Integer;
begin
Len := Length(Hex);
If Len = 0 then Exit;
If (Len mod 2) <> 0 then RaiseException('bad hex length');
Idx := 1;
repeat
C := Hex[Idx];
case C of
'0'..'9': B := Byte((Ord(C) - '0') shl 4);
'A'..'F': B := Byte(((Ord(C) - 'A') + 10) shl 4);
'a'..'f': B := Byte(((Ord(C) - 'a') + 10) shl 4);
else
RaiseException('bad hex data');
end;
C := Hex[Idx+1];
case C of
'0'..'9': B := B or Byte(Ord(C) - '0');
'A'..'F': B := B or Byte((Ord(C) - 'A') + 10);
'a'..'f': B := B or Byte((Ord(C) - 'a') + 10);
else
RaiseException('bad hex data');
end;
Stream.WriteBuffer(B, 1);
Inc(Idx, 2);
until Idx > Len;
end;
begin
FStream := TFileStream.Create('myfile.jpg', fmCreate);
HexToBin(myFileHex, FStream);
FStream.Free;
end;
Может ли кто-нибудь указать мою ошибку?
Обновлен с полным минимальным примером. –
Единственная ошибка в этом коде, о которой говорил Мартин. –
Версия ansi, похоже, не может анализировать диапазоны случаев. Либо используйте версию Unicode, либо расширьте диапазоны ('0', '1', ...). –