الفريق العربي للهندسة العكسية
تمرير TComponen عبر دالة وطريقة أستدعائها - نسخة قابلة للطباعة

+- الفريق العربي للهندسة العكسية (https://www.at4re.net/f)
+-- قسم : منتديات الهندسة العكسية - Reverse Engineering Forums (https://www.at4re.net/f/forum-4.html)
+--- قسم : الأسئلة والإستفسارات، حلول المشاكل و تبادل الخبرات - Expert Exchange Newbie Questions Answers (https://www.at4re.net/f/forum-36.html)
+--- الموضوع : تمرير TComponen عبر دالة وطريقة أستدعائها (/thread-1539.html)



تمرير TComponen عبر دالة وطريقة أستدعائها - Polia - 08-04-2020

سلام عليكم 
شباب واحهت مشكلة اثناء تمرير Tlabel و TMemo و Button عبر دالة ضهر لي هدا الخطأ 

[صورة مرفقة: 263871612.png]

في الدلفي تمرر عادي لكن في C++ bUILDER مشكلة


RE: تمرير TComponen عبر دالة وطريقة أستدعائها - x-member - 08-04-2020

مرحبا Polia 
ملاحظة : حاول قدر المستطاع جعل المشكل مفهوم بالنسبة للاعضاء ليتسنى لهم فهمه و من ثم تقديم طرق الحل (اللغة فرنسية)
لديك اخطاء في الكود , الخطأ الاول : على الدالة ان ترجع قيمة (result) و هذا عكس ال Procedure .
الخطأ الثاني : القيمة المسندة الى المتغير result غير مستخدمة 
الخطأ الثالث : غير واضح بالنسبة لي , ضع الكود المستعمل
الخطأ الرابع : راجع طريقة كتابتك للتعليمة if


RE: تمرير مكونات Component عبر دالة وطريقة أستدعائها - Polia - 08-04-2020

هاده هي الفنكشن 
[صورة مرفقة: 417836086.png]



الأن كل شيء تمام 
المشكل هو ثأثناء الأستدعاء 
البارامتر الول هو الحقل Memo وهدا شيء متفقين عليه الأ المشكل هو أثناء تمرير باقي البارامترات بتاع الـ Label و Button اثناء التمرير عادي يطلع خطأ ايرور


RE: تمرير TComponen عبر دالة وطريقة أستدعائها - x-member - 08-04-2020

(08-04-2020, 04:39 PM)Polia كتب : تمرير باقي البارامترات

يطلع خطأ لأنك لم تضع مكونات على الفورم على ما اظن ؟ 
لا ادري لماذا تريد تمرير مكونات ؟ و تغيير اللون ينفع مع محرف واحد  مثلا : 
CheckHex('h',label1,memo1,button1);
اما اذا كان هناك اكثر من لون فلن تستطيع رؤيتها لسرعة التنفيذ 
اسف لان الكود بالدلفي لكنه متشابه مع ال C++ Builder 
 
Function CheckHex(TargetName:string;Lb1:TLabel;Memo:TMemo;button:TButton):boolean;
var i: integer;
begin
    result := false;
    if TargetName = '' then exit;
    uppercase(TargetName);
    for i := 1 to length(TargetName) do
      begin
        if (TargetName[i] in ['A'..'F', '0'..'9']) = true then
         begin
          Memo.Lines.Add(TargetName[i] + ' Is a hex value');
          lb1.Caption := 'GOOD';
          lb1.color := clGreen; end
         else
          begin
          lb1.caption := 'BAD';
          lb1.Color := clRed;
          Memo.Lines.Add(TargetName[i] + ' Is not a hex value');
        end;
     end;
end;
هذا ما فهمته و الله اعلم



RE: تمرير TComponen عبر دالة وطريقة أستدعائها - Polia - 09-04-2020

المكونات موضوع علي الفورم
اريد حقل يستقبل فقط قيم Hexadecimal هدا الدرس الموضوع هو تطبيق لما هو موضوع في النسخة الثانية من الكتاب الهندسة العكسية خطوة للامام 
مررت مكونات الفورم في دالة حتي لا استعمل في كل مرة Form->Memo  ....


RE: تمرير TComponen عبر دالة وطريقة أستدعائها - x-member - 09-04-2020

(09-04-2020, 08:32 AM)Polia كتب : اريد حقل يستقبل فقط قيم Hexadecimal
ليس دقيق مئة في المئة لكنه فعال 
 
 
if not (edit1.Text[i] in ['A'..'F','0'..'9']) then
      edit1.Text := 'Please type some hex values';