来看一下吧,Delphi7中怎么一行一行读取Unicode文件(求助)
我要实现的功能是只能一行一行的读取unicode文件,假设我现在已经有了一个aaa.txt的unicode文件。
procedure TForm1.TButton1Click(Sender: TObject);
var pf:Textfile;
str1:widestring;
begin
Assignfile(pf,'D:\aaa.txt');
Reset(pf);
while not eof(pf) do
begin
readln(pf,str1);
//Tmemo1.Lines.add(str1);
TRichEdit1.Lines.add(str1);
//showmessage(str1);
end;
closefile(pf);
end;
显然这是不行的。因为delphi的VCL对unicode的支持不好。
然后我又在这个网站上面找了很多帖子,发现有个Tntunicode的第3方控件。下载下来装好后。把控件换成了第三方控件,发现还是不能读取,显示的是乱码。
我想问题可能是出在Readln这个函数上,于是就改用流来读文件。代码如下:
procedure TForm1.TntButton1Click(Sender: TObject);//Tntbutton是第三方控件
var
FileStrm: TFileStream;
FileContent: WideString;
ContentSize: Integer;
begin
FileStrm := TFileStream.Create('D:\aaa.txt', fmOpenRead);
ContentSize := FileStrm.Size - 2;
SetLength(FileContent, ContentSize div 2);
FileStrm.Position := 2;//跳过Unicode标志
FileStrm.Read(FileContent[1], ContentSize);
TntRichedit1.Lines.Text := FileContent;//TntRichedit也是第三方控件
FileStrm.Free;
end;
结果就能够正常显示了。
但我是要一行一行的读取文件啊。Readln是没指望了。我想只有用流才能行了,请高手指点用流来读文件有什么函数可以一行一行的读啊?