03-10-2014, 03:53 PM
السلام عليكم
إدا كنت ستعدل في بايتات الملف من Memo
سيتوجب عليك تحويل HexStr إلى Byte Array
هده دالتين واحدة لتحويل HexStr و الأخرى لإعادة الكتابة في الملف من جديد
أيضا مرفق المثال في المشاركة رقم 6
http://www.delphi4arab.net/forum/showpos...ostcount=6
مع إضافة إمكانية إعادة الكثابة
إدا كنت ستعدل في بايتات الملف من 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;
}
http://www.delphi4arab.net/forum/showpos...ostcount=6
مع إضافة إمكانية إعادة الكثابة
سبحان الله وبحمده سبحان الله العظيم

