and*_*ies 6 delphi delphi-7 delphi-2007
我试图从.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;
Run Code Online (Sandbox Code Playgroud)
有谁知道问题可能是什么?
正如 Michael 所说,您正在处理 UTF-16 编码的文件,因此您必须手动加载和解码它。网上有各种WideString基于类似的类,或者Borland在单元中有自己的实现,尝试使用其中之一而不是Pascal文件I/O,例如:TStringListWideStrings
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;
Run Code Online (Sandbox Code Playgroud)
或者:
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;
Run Code Online (Sandbox Code Playgroud)
或者,安装 TNTWare 或 TMS 的副本,它们都具有支持 Unicode 的组件。然后您应该能够将LoadFromFile().log 文件直接放入您选择使用的 Unicode Memo 组件中。