gpt4 book ai didi

delphi - delphi XE中如何读取文件内容到字符串

转载 作者:行者123 更新时间:2023-12-03 14:40:36 26 4
gpt4 key购买 nike

我正在将应用程序从 delphi 2007 迁移到 delphi xe,但我在读取文件 (ascii) 并将内容存储在字符串中的过程中遇到问题

这是在 delphi 2007 中可以正常工作的代码

function LoadFileToStr(const FileName: TFileName): String;
var
FileStream : TFileStream;
begin
FileStream:= TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
try
if FileStream.Size>0 then
begin
SetLength(Result, FileStream.Size);
FileStream.Read(Pointer(Result)^, FileStream.Size);
end;
finally
FileStream.Free;
end;
end;

但是当在delphi XE中执行此代码时,结果只是像'?????????'这样的符号,我知道哪个delphi xe是unicode,所以我更改了这些行

      SetLength(Result, FileStream.Size);
FileStream.Read(Pointer(Result)^, FileStream.Size);

      SetLength(Result, FileStream.Size*2);
FileStream.Read(Pointer(Result)^, FileStream.Size);

将文件内容存储在unicode字符串中,但结果是相同的。

我如何修复此过程以读取此文件的内容?

最佳答案

您的代码不起作用,因为您正在使用 unicode 字符串作为缓冲区读取文件的内容,因此您只是将字节从 TFileStream 的内部缓冲区移动到 unicode 字符串,忽略编码。

您可以轻松修复您的程序,只需将结果类型更改为 AnsiString

function LoadFileToStr(const FileName: TFileName): AnsiString;

但我会推荐您使用 TFile.ReadAllText相反,它在一行代码中读取文件的内容,并且还处理文件的编码。

关于delphi - delphi XE中如何读取文件内容到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6104294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com