تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
تمرير TComponen عبر دالة وطريقة أستدعائها
#1
سلام عليكم 
شباب واحهت مشكلة اثناء تمرير Tlabel و TMemo و Button عبر دالة ضهر لي هدا الخطأ 

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

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



الأن كل شيء تمام 
المشكل هو ثأثناء الأستدعاء 
البارامتر الول هو الحقل Memo وهدا شيء متفقين عليه الأ المشكل هو أثناء تمرير باقي البارامترات بتاع الـ Label و Button اثناء التمرير عادي يطلع خطأ ايرور
رَبِّ إِنِّي لِمَا أَنْزَلْتَ إِلَيَّ مِنْ خَيْرٍ فَقِيرٌ 
أعضاء أعجبوا بهذه المشاركة :
#4
(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;
هذا ما فهمته و الله اعلم
أعضاء أعجبوا بهذه المشاركة : Polia
#5
المكونات موضوع علي الفورم
اريد حقل يستقبل فقط قيم Hexadecimal هدا الدرس الموضوع هو تطبيق لما هو موضوع في النسخة الثانية من الكتاب الهندسة العكسية خطوة للامام 
مررت مكونات الفورم في دالة حتي لا استعمل في كل مرة Form->Memo  ....
رَبِّ إِنِّي لِمَا أَنْزَلْتَ إِلَيَّ مِنْ خَيْرٍ فَقِيرٌ 
أعضاء أعجبوا بهذه المشاركة :
#6
(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';
أعضاء أعجبوا بهذه المشاركة : Polia


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم