使用delphi从.log文件读取时,将“ÿþI”作为输出数据

使用delphi从.log文件读取时,将“ÿþI”作为输出数据,第1张

概述我试图从.log文件读取数据并处理其内容.日志文件由另一个应用程序创建.当我在Delphi中使用readln命令并在备忘录中显示文件的内容时,我只从一个包含超过6000行数据的文件中获取一行数据(ÿþI). procedure TForm1.Button1Click(Sender: TObject); Var F : TextFile; s : strin 我试图从.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的组件.然后你应该能够直接将.f文件LoadFromfile()直接添加到你选择使用的更多Unicode Memo组件中.

总结

以上是内存溢出为你收集整理的使用delphi从.log文件读取时,将“ÿþI”作为输出数据全部内容,希望文章能够帮你解决使用delphi从.log文件读取时,将“ÿþI”作为输出数据所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1265394.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存