كيف البحث عن قيمة هيكس مينة احددها للبرنامج مهما كان ترقيمها بالاوفست يعنى لا يشترط تحديد اوفست معين لها
وبعدها يقوم بتحديد مثلا 10 او 20 بايت بعدها ويستخرجهم داخل memo
مرفق صورة
السلام عليكم
هدا حل
الدالة الأولى ترجع عنوان أول أفسيت في السلسلة الممررة
الدالة الثانية ترجع سلسلة نصية والتي هي في الأصل البايتات التي تم حصرها
PHP كود :
function FindByHexStr(const AFile, AHexStr: string): Integer; function HexStr2ChrStr(HexStr: string): string; var I: Integer; S: string; begin for I := 1 to Length(HexStr) do begin S := S + HexStr[I]; if I mod 2 = 0 then begin Result := Result + Chr(StrToInt('$' + S)); S := ''; end; end; end; var MS: TMemoryStream; FileSize: Integer; Buffer: string; begin Result := -1; MS := TMemoryStream.Create; try MS.LoadFromFile(AFile); FileSize := MS.Size; SetLength(Buffer, FileSize); MS.Read(Buffer[1], FileSize); try Result := Pos(HexStr2ChrStr(AHexStr), Buffer) - 1; except // Error end; finally MS.Free; end; end;
function GetHexStrByOffset(AFile: string; const AOffsetB, AOffsetE: Integer): string; var MS: TMemoryStream; I, FileSize: Integer; Buffer: array of Byte; begin Result := ''; MS := TMemoryStream.Create; try MS.LoadFromFile(AFile); FileSize := AOffsetE - AOffsetB + 1; SetLength(Buffer, FileSize); MS.Position := AOffsetB; MS.Read(Buffer[0], FileSize); try for I := 0 to Pred(FileSize) do begin Result := Result + IntToHex(Buffer[I], 2); end; except // Error end; finally MS.Free; end; end;
بارك الله فيك اخى
الدالة الاولى بكود الاستعمال تعمل بشكل ممتاز ولاكن الدالة التانية و يقراء من بعد الاوفست الناتج داخل الاديت ب 7 بايت مثلا
القيمة داخل اللاديت تبدا من 47621
كيف يبدا تحديد من بعد تلك القيمة ب7 بايت لتكون بداية التحديد والعرض داخل الميمو ب عد تلك القيمة وليس اول الملف
و استعمال opendlg وليس تحديد ملف داخل مسار معين
شكرا