delphi4arab منتديات دلفي للعرب
استفسار حول كود بحث بصيغة hex لقيم - نسخة قابلة للطباعة

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

الصفحات: 1 2


استفسار حول كود بحث بصيغة hex لقيم - Agmcz - 20-09-2014

الدالة GetHexStrByOffset فيها ثلاث مدخلات
الأول مسار الملف
الثاني أفست البداية
الثالث أفست النهاية
هنا يجب ان لا تكون قيمة أكبر من حجم الملف


استفسار حول كود بحث بصيغة hex لقيم - didrosoft - 02-10-2014

اولا شكرا جزيلا لاخي صاحب الموضوع المهم والذي سبق وبحثت جوانبه ولم اجد اجابة شافية وثانيا الشكر كل الشكر لاخونا الكريم الشبح على المعلومات الرائعة وبعد اذن صاحب الموضوع لي بعض التساؤلات بخصوص هذا الطرح
في الحقيقة عندي برنامج يقراء ملف الابروم من احد انواع الهواتف وكنت اضطر الى تحميل هذا الاخير الى برنامج hexedituer ومن ثم ابحث عن قيم معينة داخل الملف وهذه القيم هي شفرة الهاتف ..كل هذا العمل اليدوي اردت ان اختصره من خلال انشاء برنامج احمل له الملف عن طريق opendialog ومن ثم يعطيني القيم المرادة مباشرة ولم اجد حل لان تحميل ملف الى الذاكرة كان بطيئ ومليئ بالاخطاء ....ويبدو لي انك اخي الشبح تمتلك الحل واتمنى ان توضحلي طريقة استخدام هذه الخورزميات وهل تنفع في حالتي هذه مع اجمل التحايا اخي الفاضل


استفسار حول كود بحث بصيغة hex لقيم - didrosoft - 03-10-2014

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

[صورة: D8WE1m.png]

علما اني اضف دالة تحويل الhex الى str وهذا طبعا لاظهار قيم الميمو1 بشكل نص في ميمو2


استفسار حول كود بحث بصيغة hex لقيم - Agmcz - 03-10-2014

السلام عليكم
إدا كنت ستعدل في بايتات الملف من Memo
سيتوجب عليك تحويل HexStr إلى Byte Array
هده دالتين واحدة لتحويل HexStr و الأخرى لإعادة الكتابة في الملف من جديد

PHP كود :
type
  TByteArray 
= array of Byte;

procedure HexStr2ByteArray(const HexStr: string; out ByteArray: TByteArray);
var
  
I: Integer;
begin
  SetLength
(ByteArray, Length(HexStr) div 2);
  for 
I := 0 to Pred(Length(HexStr) div 2) do
  
begin
    ByteArray
[I] := StrToInt('$' + Copy(HexStr, (I * 2) + 1, 2));
  
end;
end;

procedure WriteHexStrByOffset(const AOldFile, ANewFile: string; const ABuffer:
  
TByteArray;
  const 
AOffsetB, AOffsetE: Integer);
var
  
MS: TMemoryStream;
begin
  MS 
:= TMemoryStream.Create;
  try
    
MS.LoadFromFile(AOldFile);
    
MS.Position := AOffsetB;
    
//MS.Seek(0, 0);
    
try
      
MS.WriteBuffer(ABuffer[0], AOffsetE + 1);
      
MS.SaveToFile(ANewFile);
    
except
      
// Error
    
end;
  finally
    
MS.Free;
  
end;
end;

{
Usage:

var
  
ByteArray: TByteArray;
begin
  HexStr2ByteArray
('FF00EE', ByteArray);
  
WriteHexStrByOffset('Test.exe', 'NewTest.exe', ByteArray, 0, 3);
end;
} 
أيضا مرفق المثال في المشاركة رقم 6
http://www.delphi4arab.net/forum/showpost.php?p=49457&postcount=6
مع إضافة إمكانية إعادة الكثابة


استفسار حول كود بحث بصيغة hex لقيم - didrosoft - 09-10-2014

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