سلام خدمت دوستان
یه مدت هست یه مشکل جدی در فایلهایی که از یک برنامه تایپ استفاده می کنند پیش میاد.
معمولا هنگام قطع برق پیش میاد اما گزارش شده که در حال کار عادی هم پیش اومده.
برنامه با فشار هر کلید فاصله و همچنین بعضی کارهای دیگه هم فایل رو ذخیره می کنه و هم پشتیبان میگیره.
مشکلی که پیش میاد این هست که گاهی کل فایل با کارکتر صفر پر میشه و دیده شده که انتهای فایل خراب میشه. مثلا چند روز پیش یه لحظه برق کم و زیاد شد، یه فایل 25 کیلو بایتی شد 31 بایت(در انتهای هر فایل کارکتر & وجود داره و در قسمتی از برنامه کارکترهای انتهای فایل بعد از اون رو که فاصله یا انتهای سطر باشند(عملا غیر مفید)، خودکار حذف می کنم).
نمی دونم چرا محتوای فایل تغییر می کنه. شاید بتونم هر پنج دقیقه یک فایل موقت درست کنم(مثل کاری که مایکروسافت ورد می کنه) اما مطمئن نیستم که آیا تایمر در عمل برنامه اخلال ایجاد می کنه یا نه ولی در هر صورت مشکل اینطوری حل نمیشه.
خیلی پیش شخصی به من گفت چرا وقتی برنامه دیگری روی مجموعه از فایلها کار کرده ولی هنوز برنامه رو نبسته ایم، فایلها قفل هستند.(چون خیلی پیش بود یادم نمیاد میخواست با برنامه فایل باز کنه یا حذف کنه یا چه کاری بود)
می ترسم فایل اخیری که برنامه روش کار می کنه به نحوی هنوز بسته نشده باشه و باقطع برق، محتواش خراب بشه.چون فقط فایل جاری خراب میشد.
من با چنین کدی فایل رو ذخیره می کنم:
If MakeBackup=True then
BackUp(CurFileName);
AssignFile(F,CurFileName);
ReWrite(F,1);
Seek(F,0);
BlockWrite(F,Pointer(FileStr)^,Length(FileStr));
CloseFile(F);
نمی دونم تغییر نحوه ذخیره اطلاعات متن فایل کمکی می کنه؟ آیا بهتره از فایل استریم یا FileOpen استفاده کنم یا نه؟