الفريق العربي للهندسة العكسية

نسخة كاملة : تمرير TComponen عبر دالة وطريقة أستدعائها
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
سلام عليكم 
شباب واحهت مشكلة اثناء تمرير Tlabel و TMemo و Button عبر دالة ضهر لي هدا الخطأ 

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

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



الأن كل شيء تمام 
المشكل هو ثأثناء الأستدعاء 
البارامتر الول هو الحقل Memo وهدا شيء متفقين عليه الأ المشكل هو أثناء تمرير باقي البارامترات بتاع الـ Label و Button اثناء التمرير عادي يطلع خطأ ايرور
(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;
هذا ما فهمته و الله اعلم
المكونات موضوع علي الفورم
اريد حقل يستقبل فقط قيم Hexadecimal هدا الدرس الموضوع هو تطبيق لما هو موضوع في النسخة الثانية من الكتاب الهندسة العكسية خطوة للامام 
مررت مكونات الفورم في دالة حتي لا استعمل في كل مرة Form->Memo  ....
(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';