**** تصحيح هذا المثال عن الاتحاد والتقاطع والفرق في المجموعات في بيئة دلفي
#1
السلام عليكم
**** تصحيح هذا المثال عن الاتحاد والتقاطع والفرق في المجموعات في بيئة دلفي
PHP كود :
procedure TForm1.Button1Click(Sender: TObject);
type
    x
= set of 1..9;
var
    
a,b,c1,c2,c3 :x;
begin
// a:=[1,2,3];
// b:=[1,2,4];
a:=edit1.text;
b:=edit2.text;
//union...   
c1:= a + b;
label1.caption:=c1;  //   c1=[1,2,3,4]
//
// intersecion...   
c2:= a * b;    
label2.caption:=c2;  // c2=[1,2]
//
// difference...
c3:= a - b;
label3.caption:=c3;  //  c3=[3]

end; 
واليكم المثال في المرفقات وجزاكم الله خيرا


الملفات المرفقة
.rar   esomb.rar (الحجم : 3.18 ك ب / التحميلات : 6)
الرد
#2
و عليكم السلام ورحمة الله و بركاته

هذا مثال آخر للتوضيح ....

PHP كود :
[0..4,6] + [5] = [0..6] // union...
[1..5] - [2,5] = [1,3,4] // difference...
[1..4,6] * [3..9] = [3,4,6] // intersecion... 

مثال عملي :

PHP كود :
Type
 Tmembers 
= (TF6M,moh38,Goblin,chehrour,STRELiTZIA,ALMOB4RM3G,kachwahed,BMAbdelAziZ);
 
GMemb = Set Of Tmembers;
Var
 
AllMemb: GMemb;
Const
 
Memb = [TF6M,moh38,Goblin,chehrour];
begin
AllMemb 
:= AllMemb * Memb; // Members
AllMemb:= AllMemb - Memb; // Gold Members
AllMemb:= AllMemb + Memb  // Delphi4Arab
end; 

:bleh: بالتوفيق ,,
I'M Fly Like A G6

الرد
#3
PHP كود :
DiamondMemb := Memb - [moh38,Goblin,chehrour]; 
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد
#4
جزى الله خيرا الاخوة على هذا التوضيح
المشكلة هي كيف نقوم باظهار النتيجة في label1 و label 2 و label3
لقد جربت strtoint و غيرها فلم تنجح
بتوضيح اكثر كيف نحول من set الى string
وشكرا
الرد
#5
أخي moh38 يمكنك أن تفهم ان التعامل مع الـ Enum (نوع من الأنماط :: Type énumérés)
على أساس ترتيبها (Ord) في تعريف النمط (Type) , لاحظ هدا المثال :wacko: :
PHP كود :
Type
 Tcolor 
= (Red,Black,White,Green);
Var
 
Color: Tcolor;

begin
Color
:= Low(Tcolor);
 
ShowMessage(IntToStr(Ord(Color)));
Inc(Color);
 
ShowMessage(IntToStr(Ord(Color)));
Dec(Color);
 
ShowMessage(IntToStr(Ord(Color)));
end; 
الأن لعرض الـ Enum في String Result مثلا :

نقوم بكتابة دالة بسيطة ترجع الـ String المكافئ للـ Ord المقابل له في TColor

PHP كود :
Type
 Tcolor 
= (Red,Black,White,Green);

Function 
Enum2Str(MyColor : Tcolor):String;
begin
 
case MyColor of
   Green 
: Result:='Green';
   
White : Result:='White';
   
Red   : Result:='Red';
   
Black : Result:='Black';
 
end;
end; 
الأن كتوظيف للدالة Enum2Str :

PHP كود :
Var
 
Color: Tcolor;
begin
Color 
:= Tcolor(2);//White
case Color of
 Tcolor
(0):
   
ShowMessage(Enum2Str(Color));
 
Tcolor(1):
   
ShowMessage(Enum2Str(Color));
 
Tcolor(2):
   
ShowMessage(Enum2Str(Color));
 
Tcolor(3):
   
ShowMessage(Enum2Str(Color));
end;
end; 
بدمج المشاركة #2 & #5 يمكنك بكل سهول تصحيح الكود بنفسك .
أ ر جـ و ا أن تكون الفكرة قد وصلت .. بالتوفيق ,,
I'M Fly Like A G6

الرد
#6
يمكن الاستعانة بالتابع GetEnumName من المكتبة TypInfo
مثال:
PHP كود :
uses
  TypInfo
;

Type
 TMembers 
= (TF6M, moh38,kachwahed);

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage
(GetEnumName(TypeInfo(TMembers), 1))
end; 
حيث الرقم 1 هو Ord (ترتيب) moh38 من النمط (المجموعة) TMembers.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد


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


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