ما هي الملفات و كيف نتعامل معها ؟؟
#48
إقتباس :لماذا المتغيران offest, length من النوع  DWORD ؟ 

في هذه الحالة لا يهم DWORD هو نوع من ااعداد الصحيحة الموجبة فقط ..يمكنه التعامل و تحديد العناوين في ملفات يصل حجمها الى 4G ... و لكن الافضل استعمال نوع صحيح موجب و سالب signed integer لان خلط بينها قد يؤدي الى عمليات خاطئة عند المقارنة وغير ذلك..

ملاحظة حول الدلة _Read استعمال TMemoryStream  في المثال السابق لا معنى له في هذه الدالة لانه يقوم بفتح كل الملف و نقله الى الذاكرة ثم يتم نقل مجددا الجحم المراد في مصفوفة اخرى... الاولى استعمال TFileStream الذي لا يخزن اي شي في الذاكرة...


بما ان الملفات Bin التي تريد تعديلها صغيرة اذن يمكنك استعمال TMemoryStream لتعديل بعض المعطيات بطريقة صحيحة وسهلة ... عند فتح ملف يقوم  TMemoryStream بنقله كاملا الى الذاكرة و يمكن الوصول اليها عن طريق TMemoryStream.Memory عندئذ يمكن التعامل معها كمصفوفة بطريقة سهلة وذلك بتحويل نوع المدخل Memory من Pointer عام الى PByteArray...  في النسخ الحديثة من دالفي ينبغي استعمال TBytesStream الذي يخزن المعطيات مباشرة في مصفوفة يمكن الولوج اليها من خلال Bytes هذا اسهل دون الحاجة الى كود اضافي

كود :
var   MS: TMemoryStream;   D:byte;   P:PByteArray; begin   MS := TMemoryStream.Create;   try     MS.LoadFromFile(FileName); // open the file & load it in memory // option 1 use Position & write     D:= 50; // new arbitrary value     MS.Position := $34; //writing pos     MS.Write(D, SizeOf(D));// store value of D to memory to the address $34 and inc position by SizeOf(D)     D:= 177; // new arbitrary value     MS.Position := $95;//writing pos     MS.Write(D, SizeOf(D));// store 177 to memory to $95 and inc position by SizeOf(D) // option 2 use TMemoryStream.Memory     P := MS.Memory; // puts memory address to P and map it as array of byte     P[$34]:=50;// store 50 to the address $34     P[$95]:=177;// store 177 to the address $95 //option 3 use TBytesStream instead of TMemoryStream     //MS.Bytes[$34]:=50;     //MS.Bytes[$95]:=177;     MS.SaveToFile(FileName); // save entire memory in the file   finally     MS.Free;   end;
[-] كل من 1 user says قال شكرا ل Ndagor على المشاركة المفيدة
  • ELARAPY
الرد


الردود في هذا الموضوع
RE: ما هي الملفات و كيف نتعامل معها ؟؟ - بواسطة Ndagor - 27-11-2022, 09:22 PM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم