PDA

View Full Version : نحوه بدست آوردن CRC فایل ؟!



Nima NT
دوشنبه 05 اسفند 1387, 18:36 عصر
با سلام
من میخوام دقیقا" مقدار CRC که به عنوان 4 بایت در آخر فایل ذخیره میشه رو بخونم ولی نمیدونم چطوری این کار رو انجام بدم.
ممنون میشم اگر بنده رو راهنمایی بفرمائید.

AliReza Vafakhah
دوشنبه 05 اسفند 1387, 18:51 عصر
میشه لطف کنید بگید این مقدار چی هست ؟

به نظر من حتما باید در حالت Stream بخوانید من هم یه بار یه چنین کاری کردم

Nima NT
دوشنبه 05 اسفند 1387, 18:58 عصر
یه مقدار DWORD هست , واقعیت امر این هست که میخوام یه همچین کاری بکنم , برنامه مقدار CRC کل فایل رو بدست بیاره و بعد با مقداری که در آخر فایل هست مقایسه کنه.
اگر الگوریتم اشکالی نداره , ممنون میشم کمک کنید.

vcldeveloper
سه شنبه 06 اسفند 1387, 03:11 صبح
خب، الان مشکل کجا ست؟ در بدست آوردن CRC یک فایل، یا در خواندن 4 بایت آخر یک فایل؟

Nima NT
سه شنبه 06 اسفند 1387, 15:09 عصر
با تشکر از شما استاد گرامی
مشکل بنده در خواندن 4 بایت آخر فایل میباشد.

Mehdi Asgari
سه شنبه 06 اسفند 1387, 19:12 عصر
توجه : این اولین کدیه که در عمرم به زبان دلفی نوشتم :لبخندساده: پس ممکنه راه های بهتری باشه (ولی این جواب داد)
دوستان دلفی کار نظر بدن


procedure TForm4.Button1Click(Sender: TObject);
var
fs : TFileStream;
buffer : TBytes;

begin
fs := TFileStream.Create('C:\Temp.txt',fmOpenRead);
fs.Seek(-4,soFromEnd);
SetLength(buffer,4);
fs.Read(Pointer(buffer)^,4);
end;
در نهایت ، چهار بایت آخر فایل در متغیر buffer قرار دارن
(فایل رو باز می کنی ، میری به اندیس چهار تا مونده به آخر ، بعد چهار بایت می خونی)

vcldeveloper
چهارشنبه 07 اسفند 1387, 03:20 صبح
این اولین کدیه که در عمرم به زبان دلفی نوشتم
مشکلت اینه که یادت رفت توی دلفی باید اشیاء ساخته شده را آزاد کنی ;-)


var
fs : TFileStream;
buffer : TBytes;
begin
fs := TFileStream.Create('C:\Temp.txt',fmOpenRead);
try
fs.Seek(-4,soFromEnd);
SetLength(buffer,4);
fs.Read(buffer[0],4);
finally
fs.Free;
end;
end;
کد بالا شی fs را هم آزاد میکنه. نیازی به آزاد کردن buffer نیست، چون Dynamic Arrays، String, و Interfaceها در دلفی Reference-counted هستند، و کامپایلر بطور خودکار آنها را آزاد میکنه. اما اشیاء عادی (مثل fs : TFileStream) باید توسط برنامه نویس آزاد بشند.