delphi4arab منتديات دلفي للعرب
ما هي الملفات و كيف نتعامل معها ؟؟ - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي التقنية (https://delphi4arab.net/forum/forumdisplay.php?fid=6)
+--- قسم : دلفي والتعامل مع الملفات (https://delphi4arab.net/forum/forumdisplay.php?fid=22)
+--- الموضوع : ما هي الملفات و كيف نتعامل معها ؟؟ (/showthread.php?tid=712)

الصفحات: 1 2 3 4 5 6


ما هي الملفات و كيف نتعامل معها ؟؟ - الياس الدويرة - 07-05-2013

متعة البرمجة على الملفات bin با استعمال
Stream
و المصفوفات .


RE: ما هي الملفات و كيف نتعامل معها ؟؟ - ELARAPY - 20-05-2019

ما شاء الله موضوع جميل بارك الله فيكم

مع ان الموضوع منذ فترة كبيره إلا أنه الوحيد الذي وجدته بالعربيه بصيغة PDF على جميع مواقع الكتب .

اريد تعلم كيفية التعامل مع الملفات خصوصا BinFile  واحاول عمل واجهة بسيطه بها عدد 2 Buttons الاول يحمل قيمة محددة عند حدث الضغط يقوم بكتابة تلك القيمة في Adress معين بالملف واقصد بالكتابة اي الاستبدال اعني بذلك ان يبقى حجم الملف كما هو وعدد Adress كما هو ..
والمفتاح الثاني عند الضغط عليه يقوم بقص مجموعه عناوين محددة داخل الملف ولتكن من اخره .

ولا يهم ان يكون التعديل على نفس الملف او انتاج ملف اخر به التعديل .

انا اعلم جيدا ان الطلبات مرفوضه حتى لا يستغل الطالب خبرة الاخرين في برامج يتاجر بها او غيره , لكني والله احب تعلم دلفي واود عمل البرنامج بنفسي واخيرا البرنامج سيساعدني في عملي حيث اني اعمل في صيانة الاجهزة الالكترونيه وساستخدمه في التعديل على ملفات سوفتوير التلفاز حيث اني اقوم بالتعديل كل مرة يدوي ببرنامج HexWorkShop ..

انا اعرف القيم التي استخدمها واماكن التعديل على الملفات ولكني اريد تعلم البرمجة بشكل عملي ومفيد .

الخطوات التي اتبعتها في محاولة عمل البرنامج ما هي الا القراءة والاطلاع على بعض المواقع والكتب مثل كتاب التعامل مع الملفات بدلفي للاستاذ TF6M وايضا بعض المواقع مثل   http://www.delphibasics.co.uk/Article.asp?Name=Files

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

ان كان طلبي مرفوض فارجوا ان يتم عمل درس للمبتدئين في التعامل مع الملفات بإستفاضه .

اخيرا تفضلوا علي بالنصيحة والتوجيه .

شكرا جزيلا والسلام علي من أتبع الهدى .


RE: ما هي الملفات و كيف نتعامل معها ؟؟ - Agmcz - 20-05-2019

السلام عليكم
ألق نظرة هنا

أيضا إستخدم الصنف TMemoryStream
ودوال ReadFile, WriteFile

PHP كود :
function file_(const FileName: string; Offset: DWORD; NewValue: Byte): Integer;
var
 
 MS: TMemoryStream;
begin
  Result 
:= 0;
 
 if not FileExists(FileName) then
    Exit
;
 
 MS := TMemoryStream.Create;
 
 try
    MS
.LoadFromFile(FileName);
 
   MS.Position := Offset;
 
   Result := MS.Write(NewValue, SizeOf(Byte));
 
   //MS.SetSize(MS.Size - 1);
 
   MS.SaveToFile(FileName + '_Patched');
 
 finally
    MS
.Free;
 
 end;
end;

// usage
// file_('file.bin', 3, $AB); 



RE: ما هي الملفات و كيف نتعامل معها ؟؟ - ELARAPY - 20-05-2019

(20-05-2019, 03:40 AM)Agmcz كتب : ألق نظرة هنا
أيضا إستخدم الصنف TMemoryStream ودوال ReadFile, WriteFile
وعليكم السلام ورحمة الله وبركاته

بارك الله فيك اخي الحبيب .. رجاءا لا تنسى دائما وضع Comment لاني مبتدأ بارك الله فيك .

ما فهمته من الكود هو عبارة عن دالة ترجع integer
ومتغير ms تم حجزه وهو خاص بالملف .
جملة if للتحقق من وجود الملف وان لم يكن موجود فيتم انشاءه .. هل يتم تعويض ال (FileName) بمسار واسم الملف المراد التعامل معه ؟
MS.LoadFromFile(FileName); لتحميل الملف .
MS.Position := Offset; لتحديد الادريس المراد التعامل معه . فهل يتم تغير Offset الى العنوان الخاص به ؟
Result := MS.Write(NewValue, SizeOf(Byte)); حفظ القيم الجديدة على الملف الذي يحتويه المتغير Ms
MS.SaveToFile(FileName + '_Patched'); حفظ ما بالمتغير Ms الى القرص الصلب .
finally
MS.Free; لتحرير المتغير من الذاكرة .

انا اريد شرح لاني اريد التعلم وهذا ما فهمته من النظر الى الكود واشعر ان الامور ليست بالوضوح التام امام عيني .

شكرا


RE: ما هي الملفات و كيف نتعامل معها ؟؟ - محمد عبد العزيز - 20-05-2019

كود :
جملة if للتحقق من وجود الملف وان لم يكن موجود فيتم انشاءه ..
لا، ان لم يكن الملف موجود يتم الخروج/التوقف عن تنفيذ الأوامر التالية.
إقتباس :هل يتم تعويض ال (FileName) بمسار واسم الملف المراد التعامل معه ؟
اسم الملف كامل بما في ذلك المسار
إقتباس :MS.Position := Offset; لتحديد الادريس المراد التعامل معه . فهل يتم تغير Offset الى العنوان الخاص به ؟
للذهاب لوضع/مكان معين، وما يلي من قراءة/كتابة تكون في ذلك المكان


RE: ما هي الملفات و كيف نتعامل معها ؟؟ - ELARAPY - 20-05-2019

MS.Position := Offset; .... كيف يتم تحديد عدد 2 Offset لتحديد بداية ونهاية البلوك المراد اعادة كتابته .

اقصد تحديد عنوان (من .. الى )


RE: ما هي الملفات و كيف نتعامل معها ؟؟ - Agmcz - 20-05-2019

(20-05-2019, 12:58 PM)ELARAPY كتب : MS.Position := Offset; .... كيف يتم تحديد عدد 2 Offset لتحديد بداية ونهاية البلوك المراد اعادة كتابته .

اقصد تحديد عنوان (من .. الى )

المهم تحديد مكان البداية
إذا كان عنوان البداية 2 وحجم الداتا التي سيتم كتابتها 6 بايت عنوان النهاية سيكون 8.


RE: ما هي الملفات و كيف نتعامل معها ؟؟ - ELARAPY - 20-05-2019

الشكر لله ثم لكم جميعا على التعاون . ان شاء الله ساجرب واعاود الرد بالموضوع .

ربنا يبارك لكم ويجزيكم الخير ان شاء الله. السلام عليكم .

اخر شئ بما يخص الموضوع .. استخدام Result := MS.Write(NewValue, SizeOf(Byte)); هل تفيد كتابة داتا جديدة مكان القديمة ام تشبه insert ؟

كيف يتم تغير ال Value للملف او اضافه Value جديد مما يزيد من حجم الملف ؟


RE: ما هي الملفات و كيف نتعامل معها ؟؟ - Agmcz - 20-05-2019

إقتباس :اخر شئ بما يخص الموضوع .. استخدام Result := MS.Write(NewValue, SizeOf(Byte)); هل تفيد كتابة داتا جديدة مكان القديمة ام تشبه insert ؟

كيف يتم تغير ال Value للملف او اضافه Value جديد مما يزيد من حجم الملف ؟

الإجراء Write يقوم بالكتابة في مجال الذاكرة التي نعمل عليها
أي كتابة قيم جديدة في مكان القديمة.


يتم تحديد موضع Read/Write بإستخدام
MS.Position
أو
MS.Seek


لنحصل على شيء يشبه Insert
سنستعمل Read, Write, SetSize


RE: ما هي الملفات و كيف نتعامل معها ؟؟ - AX302 - 21-05-2019

(20-05-2019, 12:58 PM)ELARAPY كتب : MS.Position := Offset; .... كيف يتم تحديد عدد 2 Offset لتحديد بداية ونهاية البلوك المراد اعادة كتابته .

اقصد تحديد عنوان (من .. الى )

تفقد السورس هنا 
http://delphi4arab.net/forum/showthread.php?tid=10011