Mahyaa
چهارشنبه 11 بهمن 1385, 18:24 عصر
سلام
یک برنامه دارم مینویسم که از فایل به عنوان دیتابیسش استفاده میکنه . یک کلاس توی این برنامه هست که خودش رو توی فایل مینویسه . طبق معمول هم یک سری متدهای Add و Display و ... توی این کلاس دارم که برای اضافه کردن رکورد به فایل و نمایش و ... هست .
مشکل من با متد Edit هستش .یعنی میخوام یکی از رکوردهایی رو که قبلا توی فایل نوشته بودم ، ویرایش کنم . من کد رو یک چیزی شبیه به این نوشتم که اشکال داره . یعنی نمیتونم حالیش کنم که فایل رو با اطلاعاتی که درش وجود داره ، باز کن و Position رو ببر اونجایی که میگم و حالا جای اوین رکورد اینی که من میگم رو بنویس .
در ضمن از fstream استفاده میکنم .
ممنون میشم اگر بتونید راهنمایی کنید.
یادم رفت بگم که اشکال اینی که نوشتم اینه که فایل رو از اول مینویسم یعنی بقیه رکوردها رو پاک میکنه .
void TMyClass::OverwriteInFile(int RecordIndex)
{
ofstream OutFile;
OutFile.open(MY_FILE_NAME , ios::out | ios::binary);
OutFile.seekp(RecordIndex * sizeof(TMyClass));
OutFile.write((char *)this , sizeof(*this));
OutFile.close();
}
یک برنامه دارم مینویسم که از فایل به عنوان دیتابیسش استفاده میکنه . یک کلاس توی این برنامه هست که خودش رو توی فایل مینویسه . طبق معمول هم یک سری متدهای Add و Display و ... توی این کلاس دارم که برای اضافه کردن رکورد به فایل و نمایش و ... هست .
مشکل من با متد Edit هستش .یعنی میخوام یکی از رکوردهایی رو که قبلا توی فایل نوشته بودم ، ویرایش کنم . من کد رو یک چیزی شبیه به این نوشتم که اشکال داره . یعنی نمیتونم حالیش کنم که فایل رو با اطلاعاتی که درش وجود داره ، باز کن و Position رو ببر اونجایی که میگم و حالا جای اوین رکورد اینی که من میگم رو بنویس .
در ضمن از fstream استفاده میکنم .
ممنون میشم اگر بتونید راهنمایی کنید.
یادم رفت بگم که اشکال اینی که نوشتم اینه که فایل رو از اول مینویسم یعنی بقیه رکوردها رو پاک میکنه .
void TMyClass::OverwriteInFile(int RecordIndex)
{
ofstream OutFile;
OutFile.open(MY_FILE_NAME , ios::out | ios::binary);
OutFile.seekp(RecordIndex * sizeof(TMyClass));
OutFile.write((char *)this , sizeof(*this));
OutFile.close();
}