使用delphi从.log文件读取时,将“?tI”作为输出数据
发布时间:2020-12-15 09:31:57 所属栏目:大数据 来源:网络整理
导读:我试图从.log文件中读取数据并处理其内容.日志文件由另一个应用程序创建.当我在Delphi中使用readln命令并在备忘录中显示文件的内容时,我只从一个包含超过6000行数据的文件中获取一行数据(?tI). procedure TForm1.Button1Click(Sender: TObject); Var F : Tex
我试图从.log文件中读取数据并处理其内容.日志文件由另一个应用程序创建.当我在Delphi中使用readln命令并在备忘录中显示文件的内容时,我只从一个包含超过6000行数据的文件中获取一行数据(?tI).
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的组件.然后你应该能够直接将.f文件LoadFromFile()直接添加到你选择使用的更多Unicode Memo组件中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |