急问:TFileStream 的问题
我想在一个文件 末尾添加一些信息,再读出来程序如下:
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();
try
{
m_stream-> Seek(0,soFromEnd);
m_stream-> Write(&type, typelen);
m_stream-> Write(&typelen, sizeof(typelen));
}
__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);
char filetype[50];
int filetypelen;
m_stream-> Seek(-sizeof(filetypelen),soFromEnd);
m_stream-> Read(&filetypelen,sizeof(filetypelen));//能正确读出
m_stream-> Seek(-(filetypelen+sizeof(filetypelen)),soFromEnd);
m_stream-> Read(&filetype,filetypelen);//出错,读出错误
filetype[filetypelen]= '\0 ';
AnsiString str= " ";
for(int i=0;i <strlen(filetype);i++)
str+=filetype[i];
Edit2-> Text=str;
delete m_stream;
m_stream=NULL;
}
------解决方案--------------------
m_stream-> Write(type.c_str(), typelen);