在 Delphi 7 的文件中保存十六进制值或 UTF-16 [LE] [使用这些代码时出错]

问题描述 投票:0回答:1

继续我之前的问题:How to save UTF-16 (Little Endian) and String value inside a file inside Delphi 7?

当我使用this answer中的以下代码时:

uses
  Classes;
    
const
  BOM: WideChar = $FEFF;
var
  W: WideString;
  FS: TFileStream;
begin
  W := 'ᗿABC';
  FS := TFileStream.Create('text.txt', fmCreate);
  try
    FS.WriteBuffer(BOM, Sizeof(BOM));
    FS.WriteBuffer(PWideChar(W)^, Length(W) * Sizeof(WideChar));
  finally
    FS.Free;
  end;
end;

我有这些问题:

  1. 当我使用这个:

    W := 'ᗿABC';
    我的IDE显示
    W := '?ABC';
    我可以解决这个问题吗?因为[?]不是我的目标

  2. 运行代码时,我得到图像中的错误:

delphi delphi-7
1个回答
0
投票
  1. Delphi 7 中的代码编辑器不能很好地支持 Unicode 字符,如果有的话。你真的应该停止使用 25 岁的编译器并升级。

    无论如何,试试这个:

    W := #$15FF'ABC';
    

    或者,您可能不得不求助于更像这样的东西:

    W := WideChar($15FF) + WideString('ABC');
    
  2. 尝试将整数值类型转换为

    WideChar

    const
      BOM: WideChar = WideChar($FEFF);
    

    否则,使用

    Word
    代替
    WideChar

    const
      BOM: Word = $FEFF;
    
© www.soinside.com 2019 - 2024. All rights reserved.