高手帮我看看这个问题是为什么呀C++Builder
我想在一个文件的尾部加入一些信息,再读出来
//加入函数
void __fastcall TForm1::Button3Click(TObject *Sender)
{
AnsiString sourcepath=Edit1-> Text;
TFileStream *m_stream;
m_stream=new TFileStream(sourcepath,fmOpenWrite|fmShareExclusive);
AnsiString type=ComboBox1-> Text;
int typelen=type.Length();//执行到此值为16
try
{
m_stream-> Seek(0,soFromEnd);
m_stream-> Write(&typelen, sizeof(int));
}
__finally
{
delete m_stream;
m_stream=NULL;
}
//读出函数
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString filepath=Edit1-> Text;
TFileStream *m_stream;
m_stream=new TFileStream(filepath,fmOpenRead|fmShareExclusive);
int filetypelen;
m_stream-> Seek(-sizeof(filetypelen),soFromEnd);//-sizeof(filetypelen)值不是-4,也是一大值
m_stream-> Read(&filetypelen,sizeof(filetypelen));//读出来的是一个很大的值
delete m_stream;
m_stream=NULL;
}
[解决办法]
试试这样:
m_stream-> Seek((-1)*sizeof(int),soFromEnd);
m_stream-> Read(&filetypelen,sizeof(int));