有关TFileStream

apache_cd 2007-04-04 04:48:19
请大家帮我看看如下这段代码,为什么读出的内容和文件内容不一样呢

文件内容:1234567890

读出内容:1234567890?dg'


TFileStream * File1 = new TFileStream("D:\\fromhell.txt",fmOpenRead);



char * buffer= new char[File1->Size];


File1->ReadBuffer(buffer,File1->Size);


Memo1->Lines->Add(buffer);


delete buffer;


File1->Free();
...全文
286 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
痞子酷 2007-04-09
  • 打赏
  • 举报
回复
TFileStream * File1 = new TFileStream("D:\\fromhell.txt",fmOpenRead);



char * buffer= new char[File1->Size + 1];


File1->ReadBuffer(buffer,File1->Size + 1);
buffer[File1->Size] = '\0';

Memo1->Lines->Add(buffer);


delete buffer;


File1->Free();

最好:
Memo1->LoadFromFile(...)
truelove7283159 2007-04-04
  • 打赏
  • 举报
回复
up
apache_cd 2007-04-04
  • 打赏
  • 举报
回复
那我这里如果处理的是二进制文件呢?

其实这个buffer 是 MD5Hash 的输入
Jim@luckeeinc.com 2007-04-04
  • 打赏
  • 举报
回复
更正ShowMessage(sg->Strings[0]);
ccrun.com 2007-04-04
  • 打赏
  • 举报
回复
另外,File1->Free();建议用delete File1; 来代替。
ccrun.com 2007-04-04
  • 打赏
  • 举报
回复
看了看,没什么大的问题。

注意你的代码有可能造成内存泄露:
delete buffer;
改成
delete []buffer;
Jim@luckeeinc.com 2007-04-04
  • 打赏
  • 举报
回复
直接用TStringList
TStringList *sg = new TStringList;
sg->LoadFromFile("D:\\fromhell.txt")
ShowMessage(sg->Strings[i]);
delete sg
我不懂电脑 2007-04-04
  • 打赏
  • 举报
回复
TFileStream * File1 = new TFileStream("D:\\fromhell.txt",fmOpenRead);



char * buffer= new char[File1->Size];


File1->ReadBuffer(buffer,File1->Size + 1); //关键在这里没有串末符

buffer[File1->Size] = '\0';

Memo1->Lines->Add(buffer);


delete buffer;


File1->Free();

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧