27-05-2017, 11:58 AM
السلام عليكم
رمضان كريم على الجميع
عندي هذا الكود الخاص بالبحص عن قيم بالهكس موجودة في ملف
الكود يعمل جيدا ولكن اريد التعديل عليه
memo2.Lines.Add(IntToStr(FindByHexStr(opendialog1.FileName, (edit2.text))));
جربت هذا لكن يعطي النتيجة -1
فهل من حل للمشكل
وهل يمكن تطوير الكود لجلب اوفيس جميع القيم لانه يتوقف عند القيمة الاولى
وشكرا
رمضان كريم على الجميع
عندي هذا الكود الخاص بالبحص عن قيم بالهكس موجودة في ملف
كود :
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;
Usage:
Edit1.Text := IntToStr(FindByHexStr('C:\Test.exe', '4D5A500002'));الكود يعمل جيدا ولكن اريد التعديل عليه
memo2.Lines.Add(IntToStr(FindByHexStr(opendialog1.FileName, (edit2.text))));
جربت هذا لكن يعطي النتيجة -1
فهل من حل للمشكل
وهل يمكن تطوير الكود لجلب اوفيس جميع القيم لانه يتوقف عند القيمة الاولى
وشكرا

