首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

文件流读取有关问题

2012-09-15 
文件流读取问题这段代码有问题吗?调试执行到A之前都没问题,但是过了A行,srcFileName的值变成乱码,srcText

文件流读取问题
这段代码有问题吗?调试执行到A之前都没问题,但是过了A行,srcFileName的值变成乱码,srcText没能获得内容

Delphi(Pascal) code
      srcFileName := fodSource.FileName;      srcStream := TFileStream.Create(srcFileName, fmOpenRead);      srcStream.ReadBuffer(srcText, srcStream.Size);           //A      redtSource.Text := srcText;      srcStream.Free;


[解决办法]
srcFileName := fodSource.FileName;
srcStream := TFileStream.Create(srcFileName, fmOpenRead);
//srcStream.ReadBuffer(srcText, srcStream.Size); //String实际上只是一个指向一个String结构的指针,如果使用ReadBuffer会直接改写掉这个指针所在内存的内容,因此这个使用方法是错误的
SetLength(srcText,srcStream.Size); //先根据需要对String进行内存分配
srcStream.ReadBuffer(srcText[1], srcStream.Size); //写入到String指向的真正的内存当中
redtSource.Text := srcText;
srcStream.Free;

[解决办法]
看你需要,如果分配的内存比较大,并且当前的过程(函数)未执行完的话,可以通过SetLength(String,0)释放。如果不释放将在过程(函数)执行完之后自行释放。

热点排行