delphi4arab منتديات دلفي للعرب

نسخة كاملة : [تمرين] : عمل محاكاة للدالة rgb
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3 4 5
إقتباس :هل اتضحت الصورة ؟
نعم هذه الفكرة ... اعرفها من كثر ما اتعامل مع الألعاب p: ... شكرا على التنبيه
ALmuhhnad كتب :
PHP كود :
function GetBValueX(RGB : Cardinal):Byte;
asm
  PUSH EAX
  PUSH ECX
  MOV CL
,BYTE PTR DS:[ESP+6]
  
MOV BYTE PTR DS:[ESP+4],CL
  POP ECX
  POP EAX
end
; 

أووووه ... فعلا عمل رائع و نظيف Clean Smile
أرى أنك أحببت الأسمبلي .. و مستواك فعلا في تطور !!
-------------------------------
الدالة يمكن تطويرها أكثر و أكثر (أسرع ) Smile

[COLOR="DarkOrange"]هذه هدية مني :
[/COLOR]
PHP كود :
function GetBValueX(RGB : Cardinal):Byte;
asm
  PUSH EAX
  POP EAX
  MOV AL
,BYTE PTR DS:[ESP-2]
end; 
و على فكرة يمكن كتابة الدالة GetBValueX باستخدام تعليمتين أو حتى باستخدام تعليمة واحدة !!!
لا أريــــد أن أحرق الفكرة .. سأقوم بوضعها عند انتهاء مدة التمرين Smile
فعلاً ... انا احببت الاسمبلي ... عندما تعرفت على عالم الهندسة العكسية الشيق والمثير Smile

إقتباس :و على فكرة يمكن كتابة الدالة getbvaluex باستخدام تعليمتين أو حتى باستخدام تعليمة واحدة !!!
لا أريــــد أن أحرق الفكرة .. سأقوم بوضعها عند انتهاء مدة التمرين Smile

حمستني @@ ... تعليمه واحده ... همممم ساحاول
اخيراً حصلت عليها ... هههه
PHP كود :
function GetBValueX(RGB : Cardinal):Byte;
asm
  SAR EAX
,$10
end
; 

هل هي ما لديك ؟ ... ام لديك شيء آخر
ههههه ... لقد تحايلت !!! (sar=shr)
إقتباس :- يمنع استخدام التعليمات التالية : Xor , or,shl,shr,ror,rol
حل رائع و مقبول Smile
هناك طريقة أخرى Smile باستخدام تعليمة واحدة !!

لقد قمت بالتلميح للطريقة في أحد مشاركاتي في هذا الموضوع
إقتباس :هههههههههههه ... لقد تحايلت !!! (sar=shr)
هههههه ... لم اجد هذه التعليم من ضمن التعليمات الممنوع استخدامها Smile
ساكمل التجربة بعد ان اصحو من نومي .. فمنذ الامس وانا لم انم p:
حل سريع اخر...
كود :
type TCoulor = record case Integer of 0:(color: Dword); 1:(r,g,b,nop: byte); end; Var Coulor : TCoulor; function MakeRGB(r, g, b: Byte): COLORREF; begin Coulor.r:=r; Coulor.g:=g; Coulor.b:=b; result:=Coulor.color; end; function GetBValueX(RGB:Cardinal):Byte; begin result:=Coulor.b; end; function GetGValueX(RGB:Cardinal):Byte; begin result:=Coulor.g; end; function GetRValueX(RGB:Cardinal):Byte; begin result:=Coulor.r; end;
b.m.abdelaziz كتب :حل سريع اخر...

إقتباس :- استخدام ؟؟؟؟؟؟؟؟ (لن أذكره حتى لا أحرق الفكرة Smile )
هذا ما كنت أقصده Smile
حل صحيح و أفضل من الحل السابق Smile
انتهت مدة التمرين الحل بأول الموضوع.
على فكرة أخي B.M.AbdelAziZ
ماذا لو أن المبرمج استخدم RGB بدل MakeRGB ؟؟؟
PHP كود :
result:=Coulor.X; 
أو قام بوضع الكود التالي :
PHP كود :
Var C:TColor ;
r:Byte; 
begin
c
:=$00503C32 ;
r:=GetRValueX(c); 
end; 
الصفحات : 1 2 3 4 5