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;
我正在尝试以文本形式在 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;