Lazarus 在 TMemo 中打开 XML 文件

Lazarus open XML file in TMemo

我正在尝试以文本形式在 TMemo 中打开 XML 文件。每次我这样做都会打开:

我知道那不是 XML 中的内容,如果我在记事本中打开该文件,它会正常打开并显示 XML 数据,纯文本。

这是我的代码:

procedure TForm1.Button7Click(Sender: TObject);
var
  ss: string;
  sl: TStringList;
begin
  ss := '';
  runcommand('msinfo32 /nfo pcinfo.xml', ss);
  sl:=TStringList.Create;
  sl.LoadFromFile('pcinfo.xml');
  Memo2.Text := sl.Text;
  sl.Free;
end;

文件以 Unicode 格式保存,打开记事本并另存为文件显示编码。因此,将文件打开为流,然后转换为 UTF8 非常有效。

stream := TMemoryStream.Create;
  try
    stream.LoadFromFile('pcinfo.xml');
    SetLength(s, stream.Size);
    stream.ReadBuffer(s[1], stream.Size);
    memo2.Text := ConvertEncoding(s, GuessEncoding(s), EncodingUTF8);
  finally
    stream.Free;
  end;