PDA

View Full Version : سوال: خواندن و نوشتن یک بایت در فایل



mbshareat
یک شنبه 12 آبان 1398, 01:22 صبح
سلام
میخواستم در ذخیره یک بازی (Motoracing)تقلب کنم شماره مرحله اش رو تغییر بدم.دیدم بلد نیستم.در فایل کارکتر صفر زیاد بود و من همیشه از روش خوندن رشته استفاده می کردم.
ممکنه کسی کدی بذاره برای خوندن بایت شماره مثلا 25 و یه کد هم برای نوشتن این بایت. همینطور برای خوندن و نوشتن رشته و یا integer در بایت خاص از فایل؟

یوسف زالی
یک شنبه 12 آبان 1398, 15:35 عصر
سلام
خوندن و نوشتن فایل روشهای مختلفی داره، با استفاده از فایل استریم می تونید همه کار کنید.
اما اگر بخواهید مثلا رکوردی بخونید، یا عددی، می تونید نوع فایل رو جای TextFile بگذارید File of Integer یا هر چیز دیگه ای.
این روش قدیمیه، همون استریم کار کنید مسلط بشید خیلی خیلی بهتره.

mbshareat
سه شنبه 21 آبان 1398, 00:32 صبح
می دونم قانون اینه که تکلیف انجام ندید ولی ببخشید اشکال نداره درخواست کنم خوندن یک بایت یا عدد رو با فایل استریم برام تابع بنویسید؟مثلا با پارامتر ورودی اسم فایل و شماره بایت و خروجی Char یا Integer ؟

یوسف زالی
سه شنبه 21 آبان 1398, 02:18 صبح
با این تابع شما می گی از کدوم بایت تا کدوم بایت رو می خوای:



function ReadBytesFromFile(FileName: string; FromByte, ToByte: integer): TByteArray;
var
FS: TFileStream;
begin
try
FS := TFileStream.Create(FileName, fmOpenRead);
FS.Seek(FromByte -1, soBeginning);
FS.Read(Result, ToByte -FromByte +1);
finally
FS.Free;
end;
end;


procedure TForm2.Button1Click(Sender: TObject);
var
b: TByteArray;
frombyte, tobyte, len: integer;
begin
frombyte := 2;
tobyte := 5;
len := tobyte -frombyte +1;


b := ReadBytesFromFile('e:\somefile', frombyte, tobyte);
// b is from 0 to len -1 of byte
end;