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

نسخة كاملة : اريد قلب قيمة في edit
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركته 


اريد قلب قيمة في edit  

مثال 

عندي قيمة     11AB22 اريد دالة  او كود  لقلب  القمة لتصبح 

                   22AB11
وشكرا لكم
وعليك السلام ورحمة الله تعالى وبركاته

كود :
Function InverseStr(sDep : string) : string; var sFin : string; i : integer; begin sFin:= ''; for i:= length(sDep) downto 1 do begin sFin:= sFin + copy(sDep, i,1); end; result:= sFin; end;
برك الله فيك اخي الكريم
هذا الكود يقلب النص فقط ,,,المشكلة هنا هي القلب  من little endian الي big endian  او العكس التحويل يتم عبر 2 او 4 بيت و ليس 3 كما نرى في المثال 11AB22 الا بفتراض ان هناك بيت اخير يساوي 0 و لم يتم اظهاره 0011AB22 في هذه الحالة يصبح العدد عند القلب 22AB1100 هذا هو المرجح ,,لقلب 2 بيت استتعمل swap اما لقلب 4 بيت استعمل الدالة
كود :
function SwapEndian(Value:integer):integer; asm   bswap eax end;


تجربة

كود :
  Edit1.Text := IntToHex(SwapEndian(StrToint('$'+Edit1.Text)));
شكر لكم

بالنسبة لكود الاخ larbiparadox يعمل عملية swap

اما كود لاخ Ndagor يعمل InverseStr

شكرا لكم جزيرا
ركز جيدا

الدالة InverseStr تعطي قيمة  خاطئة  22BA11  كما ان هذه الدالة ReverseString موجودة  ولست في حاجة لكتابتها في الدالفي StrUtils
(18-01-2023, 03:16 PM)Ndagor كتب : [ -> ]ركز جيدا

الدالة InverseStr تعطي قيمة  خاطئة  22BA11  كما ان هذه الدالة ReverseString موجودة  ولست في حاجة لكتابتها في الدالفي StrUtils

إذا طول النص 6 حروف ثابت يمكن كتابتها هكذا

كود :
Function RevStr(MTxt : string) : string; begin result:= MTxt[6] + MTxt[5] + MTxt[3] + MTxt[4] + MTxt[2] + MTxt[1] ; end;