المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : FileSeek & FileWrite


SOFT-DZ
17-08-2010, 03:42 PM
سلام اخواني
اتمنى لو تشروحي لي هاتين الدالتين وجميع برامتر لهما ، لاني عندي مشكلة معهما
وشكرا

kachwahed
17-08-2010, 06:11 PM
السلام عليكم
الشرح متوفر في الـ Help
اطرح مشكلتك بالضبط أين هي؟

hanipino
17-08-2010, 09:23 PM
السلام عليكم

يوجد العدد من الطرق للقيام بنفس مهمة الدالتين FileSeek & FileWrite

راجع هذا (http://delphi4arab.com/forum/showthread.php?t=1102&highlight=%C7%E1%CA%DA%C7%E3%E1+%C7%E1%E3%E1%DD%C7 %CA)

SOFT-DZ
17-08-2010, 11:02 PM
مشكورين اخواني على التفاعل على كل راح اطرح المشكلة
procedure TForm1.Button1Click(Sender: TObject);

begin
if OpenDialog1.Execute then
FileHandle := FileOpen(OpenDialog1.FileName,fmOpenReadWrite);
Buffer := 0;
for i:= 10 to 20 do
begin
Count := FileSeek(FileHandle, i, 0);
result := FileWrite(FileHandle,Buffer,Count);
end;
end;
على كل المتغيرات معرفة من قبل وكلها من نوع integer
وكما ترون الغاية تصفير مناطق من الاوفيست 10 الى 20 - in dec -
لاكن النتيجة تظهر هكدا
offset stare (0) 43 57 53 08 18 24 00 00 78 DA (offset10) 00 00 00 00 00 00
00 00 00 00 00(offset20) 00 00 00 FF FF FF FF 00 00 00 00
00 00 00 00 00 00 00 00 18 8A 88 10 7A 91 26 D2
الكود تعدى المطلوب منه ، ما المشكلة

kachwahed
18-08-2010, 12:36 AM
الكود تعدى المطلوب منه
الكود لم يتعد المطلوب، الخلل هنا:
على كل المتغيرات معرفة من قبل وكلها من نوع integer
Integer يزن 4 bytes
جرب تغيير نوع Buffer إلى Byte أو Char (إذا استخدمت Char اكتب 0#)
ملاحظة: المتغير result لا محل له من الإعراب.
أيضا حيز begin/end بعد OpenDialog1.Execute ولا تنسى FileClose في النهاية.
أيضا يفضل استخدام TStreamFile
بالتوفيق.

hanipino
18-08-2010, 02:58 AM
نعم كما قال اخى kachwahed الكود الذى طرحته ملىء بالاخطاء ...

المهم هده طريقة لتغير اول 10 بايت لملف ما . عن طريق استعمال الكلاس TMemoryStream


const
My10Byte: array[1..10] of Byte = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
var
MS: TMemoryStream;
begin
MS := TMemoryStream.Create;
try
if dlgOpen1.Execute then
begin
MS.LoadFromFile(dlgOpen1.FileName);
MS.Seek(0, 0);
MS.Write(My10Byte, SizeOf(My10Byte));
MS.SaveToFile(dlgOpen1.FileName + '.Changed');
end;
finally
MS.Free;
end;
end;


اطلع على الهالب لكى تفهم اكثر .

SOFT-DZ
19-08-2010, 05:02 PM
امممم ساجرب ، مشكورين اخواني ما قصرتوا اما على الاخطاء فهدا اول كود لي هههههه