读取文件中的字符串,那位大虾帮帮(100分)

  • 主题发起人 主题发起人 全文检索
  • 开始时间 开始时间

全文检索

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button3Click(Sender: TObject);<br> &nbsp;var<br> &nbsp;f:cardinal;<br> &nbsp;textsize:longint;<br> &nbsp;bytesred:dword;<br> &nbsp;thetext:pchar;<br> &nbsp;s:string;<br> &nbsp;begin<br> &nbsp; f:=createfile('c:/1.txt',generic_read,file_share_read or file_share_write,<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nil,open_always,file_attribute_normal,0);<br><br> &nbsp; &nbsp; //获得文档中文本占据的字节数<br> &nbsp; &nbsp;readfile(f,textsize,sizeof(textsize),bytesred,nil);<br> &nbsp; &nbsp;//为thetext分配内存<br> &nbsp; &nbsp;getmem(thetext,textsize);<br> &nbsp; &nbsp;// 初始化缓冲区<br> &nbsp; &nbsp;fillmemory(thetext,textsize,0);<br> &nbsp; &nbsp;//设置指针<br> &nbsp; &nbsp;setfilepointer(f,sizeof(textsize),nil,file_begin);<br> &nbsp; &nbsp;//读取<br> &nbsp; &nbsp;readfile(f,thetext^,textsize,bytesred,nil);<br> &nbsp; &nbsp;s:=thetext;<br> &nbsp; &nbsp;//释放内存<br> &nbsp; &nbsp;freemem(thetext);<br> &nbsp; &nbsp;//关闭文件<br> &nbsp; &nbsp;closehandle(f);<br><br> &nbsp; &nbsp;listbox1.Items.Text :=s;<br>end;<br><br><br><br><br><br><br>这样运行要死机,
 
我也不知道,帮顶一下。
 
listbox1.Items.loadfromfile('c:/1.txt');
 
我复制楼主的代码载入一个1K的文本文件,一点问题都没有,是不是楼主的文本文件太大,耗尽内存啊?<br>其实用楼上的方法载入就简单多了。
 
to delphilxh<br><br>谢谢,不过不是这样。我想用API读写,生成的文件较小。<br><br>to liyinwei<br><br>我载入一个1K的文本文件会死机,除非是个空的文件.就不死机<br><br><br>再加一百分,搞得头痛死了这几个函数
 
在没用增加引用的类的情况下,减少代码才可以较少文件体积。
 
[:D]to liyinwei<br><br>就是因为不想引用太多的类。<br><br>我是用在控制台程序上的。<br><br>这个问题很奇怪,请教了很多人,居然没有人能回答。<br><br>我就弄了两天没搞定,又加一百分。[:D]
 
利用Stream进行文件读写,很快并且方便!
 
当然还有一些函数可用,如 FileOpen &nbsp;FileRead &nbsp;FileClose <br><br>但必须引用uses sysutils;<br><br>这就给程序加大了数十K的体积。
 
//释放内存<br> &nbsp; &nbsp;freemem(thetext);<br><br>是不是在这死机?<br><br>如果是,改为 thetext:=nil;
 
to weichao9999<br>我又一次重启了
 
自已搞定
 
楼主的目的仅仅是把文本信载入到 TListBox 里面,而不增大文件的体积?
 
这个只是在可视化的情况下操作方便用TListBox.直观,一但函数调用成功的话就可以直接引用了
 

Similar threads

I
回复
0
查看
731
import
I
I
回复
0
查看
775
import
I
I
回复
0
查看
770
import
I
I
回复
0
查看
711
import
I
后退
顶部