المشاركات : 73
المواضيع 27
:
: 6
الإنتساب : Dec 2012
السلام عليكم
كيف اقوم بقلب string 32 bit مثلا هذه القيمة 3FAB2000وتصبح 0020AB3F
وشكرا لكم
المشاركات : 632
المواضيع 66
:
: 6
الإنتساب : Jul 2010
و عليكم السلام .
PHP كود :
function Swap(A: Integer): Integer;
asm
{$IFDEF CPUX64}
MOV EAX,ECX
{$ENDIF !CPUX64}
BSWAP EAX
end;
الاستعمال :
PHP كود :
Caption := IntToHex(Swap($3FAB2000), 8);//Result = $0020AB3F
Open Your Source .. Open Your Mind
المشاركات : 73
المواضيع 27
:
: 6
الإنتساب : Dec 2012
بارك الله فيك اخي هذا ماكنت ابحث عنه
لكني لم استطع تطبيقه في برنامجي
ممكن تعديل على السورس وتحياتي لك
كود :
function Swap(A: Integer): Integer;
asm
{$IFDEF CPUX64}
MOV EAX,ECX
{$ENDIF !CPUX64}
BSWAP EAX
end;
procedure TForm1.Button1Click(Sender: TObject);
var j:tmemorystream;
i:integer;
p:byte;
g1:string;
begin
if not OpenDialog1.Execute then exit;
edit1.Text:=extractfilename(OpenDialog1.FileName);
j:=tmemorystream.Create;
j.LoadFromFile(OpenDialog1.FileName);
g1:='';
for i:=$0 to 3 do
begin
j.Position:=i;
j.Read(p,1);
g1:=g1+inttohex(p,2);
end;
g1 := IntToHex(Swap(g1), 8);
memo1.Text:=g1;
end;
وشكرا لك
المشاركات : 632
المواضيع 66
:
: 6
الإنتساب : Jul 2010
صحح السطر ما قبل الأخير بهذا السطر :
PHP كود :
g1 := inttohex(Swap(StrToInt(Trim(g1))), 8);
Open Your Source .. Open Your Mind
المشاركات : 73
المواضيع 27
:
: 6
الإنتساب : Dec 2012
للاسف لم يعمل معي هل من حل اخر
المشاركات : 632
المواضيع 66
:
: 6
الإنتساب : Jul 2010
لم أنتبه الى أن g يحمل قيمة بالهكس ..
عدل السطر الى :
PHP كود :
g1 := inttohex(Swap(StrToInt('$'+g1)), 8);
Open Your Source .. Open Your Mind
المشاركات : 654
المواضيع 34
:
: 106
الإنتساب : Aug 2010
السلام عليكم
بعض التعديلات إنطلاقا من الاجراء الذي وضعته
PHP كود :
function Swap(A: Integer): Integer;
asm
{$IFDEF CPUX64}
MOV EAX,ECX
{$ENDIF !CPUX64}
BSWAP EAX
end;
procedure TForm1.Button1Click(Sender: TObject);
var
MS: TMemoryStream;
P: Integer;
FileSize: Integer;
Buffer: array of Byte;
sByte: string;
begin
if not OpenDialog1.Execute then
Exit;
Edit1.Text := ExtractFileName(OpenDialog1.FileName);
MS := TMemoryStream.Create;
try
MS.LoadFromFile(OpenDialog1.FileName);
FileSize := MS.Size;
SetLength(Buffer, FileSize);
//MS.Position := 0; // B Position
MS.Read(Buffer[0], FileSize);
for P := 0 to 3 do
begin
sByte := sByte + IntToHex(Buffer[P], 2);
end;
sByte := IntToHex(Swap(StrToInt('$' + sByte)), 8);
Memo1.Lines.Add(sByte);
finally
MS.Free;
end;
end;
سبحان الله وبحمده سبحان الله العظيم
المشاركات : 654
المواضيع 34
:
: 106
الإنتساب : Aug 2010
أو من أول بايت إلى أخر بايت
PHP كود :
function Swap(A: Integer): Integer;
asm
{$IFDEF CPUX64}
MOV EAX,ECX
{$ENDIF !CPUX64}
BSWAP EAX
end;
procedure TForm1.Button1Click(Sender: TObject);
var
MS: TMemoryStream;
P, I: Integer;
FileSize: Integer;
Buffer: array of Byte;
sByte: string;
begin
if not OpenDialog1.Execute then
Exit;
Edit1.Text := ExtractFileName(OpenDialog1.FileName);
MS := TMemoryStream.Create;
try
MS.LoadFromFile(OpenDialog1.FileName);
FileSize := MS.Size;
SetLength(Buffer, FileSize);
//MS.Position := 0; // B Position
MS.Read(Buffer[0], FileSize);
I := 0;
for P := 0 to Pred(FileSize) do
begin
Inc(I);
sByte := sByte + IntToHex(Buffer[P], 2);
if I mod 4 = 0 then
begin
sByte := IntToHex(Swap(StrToInt('$' + sByte)), 8);
Memo1.Lines.Add(sByte);
sByte := '';
end;
end;
finally
MS.Free;
end;
end;
بالتوفيق
سبحان الله وبحمده سبحان الله العظيم
المشاركات : 73
المواضيع 27
:
: 6
الإنتساب : Dec 2012
بارك الله فيكما اخواي SMP3 و ghost-dz على هذه الرد لقد تم حل المشكل
حقيقة المنتدى رائع جدا وتعلمت منه الكثير
الف شكر مرة اخرى لكم