delphi4arab منتديات دلفي للعرب
كيف اضافة ملف hex دخل اداة memo - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : كيف اضافة ملف hex دخل اداة memo (/showthread.php?tid=12144)

الصفحات: 1 2


RE: كيف اضافة ملف hex دخل اداة memo - ELARAPY - 11-12-2022

(09-12-2022, 02:11 PM)Ndagor كتب : تمت اضافة دالة  ReplaceHex لعمليات تغيير المحتوى سواء يدويا باستعمال زر Replace او اليا يمكن كتابة الكود العملية استبدال عدة قيم على الشكل التالي: 

بارك الله فيك اخي , ماشاء الله مجهود واهتمام كبير جزاك الله خيرا,

هل يمكن عمل درس كامل تفصيلي (صوت وصورة) يخص التعامل مع الهيكس ويتم طرحه في قسم دروس دلفي للعرب ليشمل المبتدئ ويكون مرجعا للجميع ؟


RE: كيف اضافة ملف hex دخل اداة memo - Ndagor - 13-12-2022

يا اخي لا توجد ألغاز و شيء  .. hex هو نص(بالنظام السداسي عشر) يظهر  قيم محتوى binary  .. و الدالة BinToHex تقوم بذلك لا اكثر ولا اقل..

يمكنك تحويل الملف الى مصفوفة array  و لاجراء عمليات الأساسية: Delete لحذف جزء.. Insert لإضافة قيم جديدة و Move لاستبدال قيم باخرى و Copy لنسخ جزء من المصفوفة في اخرى جديدة.

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

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


RE: كيف اضافة ملف hex دخل اداة memo - Team dz - 21-12-2022

الف شكرا  وعرفان لك اخي الكريم Ndagor  علا المجهود الذي تبذله

بقيا  لي  في سورس  عند اختيار الملف  اريد ان يضهر  في label  حجم الملف  مع العلم ان برنامجي لايقوم بملف واحد

له عددة احجام

مثلا  الحجم اريده ان يضهر  هكذا :2,00 Mo  او  1,46  او Mo  1,46 Mo

واريد  اضافة programme  bar1 

اريده يعمل مع  TDRAWGRID

يعني عند  منادة ملف  يعمل  PROGRAMME  عند ملى TDRAWGRID  يكون  PROGRAMME BAR  100%100


RE: كيف اضافة ملف hex دخل اداة memo - Ndagor - 21-12-2022

بالنسبة لاظهار حجم الملف يمكنك استعمال كود الذي و جدته في النت

كود :
function FormatByteSize(const bytes: int64): string; const   B = 1; //byte   KB = 1024 * B; //kilobyte   MB = 1024 * KB; //megabyte   GB = 1024 * MB; //gigabyte begin   if bytes > GB then     result := FormatFloat('#.## GB', bytes / GB)   else if bytes > MB then     result := FormatFloat('#.## MB', bytes / MB)   else if bytes > KB then     result := FormatFloat('#.## KB', bytes / KB)   else     result := FormatFloat('#.## bytes', bytes); end;

اضف في اخر سطر في الدالة  Button1Click فتح الملف

كود :
Label3.Caption := FormatByteSize(MStream.Size);

بالنسبة ل ProgressBar اضافته لا تغير شيء لان فتح الملف سريع جدا يمكنه فتح ملف 10 ميغا في ثانية وهذه ليست مدة انتظار طويلة

اظهار قيم bin في Édit3 غير عملي و هناك احتمالية ان تظهر بقيم خاطئة و هذا هو الهدف من استعمال نص hex هناك حالات الحرف يحتوي على Byte واحد و اخرى على اثنين..و هناك قيملابجب استعمالهامثل 0

على كل حال راجع الامثلة السابقة المتعلقة ب  Mémo

يمكنك استعمال الكود التالي و لكن عليك تحديد الطول الذي تريد اختياره  في المثال Len  تقوم باظهار 10 حروف

كود :
procedure TForm1.DrawGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;   var CanSelect: Boolean); var Pz,R,Len :integer; S:Ansistring; begin   Pz := (ARow-1) * 16 + (ACol-1);//cellule   if (Pz >= 0) and(Pz < MStream.Size) then   begin     OffsetEdit.Text := IntToHex(Pz,6);     Len  :=10;     MStream.Position  := Pz;     SetLength(S,Len);     R:= MStream.Read(Pointer(S)^,Len);     if R<>Len then         SetLength(S,R);     Edit3.Text := S;   end; end;



RE: كيف اضافة ملف hex دخل اداة memo - Team dz - 21-12-2022

هذا الكود  خاطى

كود :
; Label3.Caption := FormatByteSize(MStream.Size)



RE: كيف اضافة ملف hex دخل اداة memo - Ndagor - 21-12-2022

الكود ليس خاطئ عليك اضافة الكود تعريف للدالة  FormatByteSize


هذا هو الكود كامل حاول ان تفهمه


RE: كيف اضافة ملف hex دخل اداة memo - Team dz - 26-12-2022

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

اخي الكريم  عندى سوال بسيط  في السورس المرفق في خاصية  ReplaceHex

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

واريد وضع قيم في العنوان 1FA340
اريد استبدال 3 اسطر تحتوى علا اصفار  الى قيم


عندما استعمل الدلة ReplaceHex  لاتذهب الى السطر الذي اريده

ارفقت لك صورة

ممكن كود  لو سمحت