gpt4 book ai didi

delphi - 使用delphi从.log文件读取时获取 "ÿþI"作为输出数据

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

我正在尝试从 .log 文件读取数据并处理其内容。日志文件是由另一个应用程序创建的。当我在Delphi中使用readln命令并在备忘录中显示文件内容时,我只从具有超过6000行数据的文件中获取一行数据(ÿþI)。

    procedure TForm1.Button1Click(Sender: TObject);
Var
F : TextFile;
s : string;
begin
AssignFile(F, 'data.log');
Reset(F);

while not Eof(F) do
begin
Readln(F, s);
Memo1.Lines.Add(s);
end;
end;

有人知道问题出在哪里吗?

最佳答案

正如 Michael 所说,您正在处理 UTF-16 编码的文件,因此您必须手动加载和解码它。网上有各种基于 WideString 的类似 TStringList 的类,或者 Borland 在 WideStrings 单元中有自己的实现,请尝试使用其中之一它们而不是 Pascal 文件 I/O,例如:

procedure TForm1.Button1Click(Sender: TObject);
var
SL : TWideStringList;
I: Integer;
s : string;
begin
SL := TWideStringList.Create;
try
SL.LoadFromFile('data.log');
Memo1.Lines.BeginUpdate;
try
for I := 0 to SL.Count-1 do
Memo1.Lines.Add(SL[I]);
finally
Memo1.Lines.EndUpdate;
end;
finally
SL.Free;
end;
end;

或者:

uses
.., WideStrings;

procedure TForm1.Button1Click(Sender: TObject);
var
SL : TWideStringList;
begin
SL := TWideStringList.Create;
try
SL.LoadFromFile('data.log');
Memo1.Lines.Assign(SL);
finally
SL.Free;
end;
end;

或者,安装 TNTWare 或 TMS 的副本,它们都具有支持 Unicode 的组件。然后您应该能够将 .log 文件直接 LoadFromFile() 放入您选择使用的 Unicode Memo 组件中。

关于delphi - 使用delphi从.log文件读取时获取 "ÿþI"作为输出数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7673938/

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