delphi4arab منتديات دلفي للعرب
الحلقة التكرارية ForLoopRamblings For...in - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : مصادر دلفي مفتوحة تعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=14)
+--- الموضوع : الحلقة التكرارية ForLoopRamblings For...in (/showthread.php?tid=1032)

الصفحات: 1 2


الحلقة التكرارية ForLoopRamblings For...in - kachwahed - 08-07-2009

[COLOR="black"]السلام عليكم
كلنا يعرف الحلقة التكرارية for..to..do، فمثلا هذه الحلقة تقوم بتفحص جدول يحتوي على أربعة ألوان وتقارنه بما كتب في خانة النص Edit1 مثال:
PHP كود :
var
  
vColor: array[1..4] of String = ('Red', 'Blue', 'Green', 'White');

procedure TForm1.Button1Click(Sender: TObject);
var
  
i: integer;
begin
for i := Low(vColor) to High(vcolor) do
  
begin
    
if vColor[i] = Edit1.Text then
    begin
      ShowMessage
('Valid color');
      Exit;
      
end;
  
end;
    
ShowMessage('Invalid color!');
end; 
انطلاقا من النسخة Delphi 2006 يمكن كتابة نفس الكود السابق بشكل آخر:

PHP كود :
var
  
vColor: array[1..4] of String = ('Red', 'Blue', 'Green', 'White');

procedure TForm1.Button1Click(Sender: TObject);
var
  
C: String;
begin
for C in vColor do
  
begin
    
if Edit1.Text = C then begin
      ShowMessage
('Valid color.');
      Exit;
      
end;
  
end;
    
ShowMessage('Invalid color!');
end; 
هذه الحلقة المتدرجة (Rambling loop) تعتبر أسهل من حيث القراءة والتفحص، كما أننا في هذه الطريقة لسنا بحاجة لمعرفة حجم الجدول (أعلى وأدنى قيمة)، وكما استعملنها مع جدول بقيم نصية (String) يمكن استعمالها مع أي جدول من قيم آخرى (integer, char...) بنفس الطريقة، ومع مكونات أخرى مثل TStringList و...
RamblingLoop كمثال يدل على أن لغة الدلفي لا تزال في تطور مستمر (خلافا لمن يظن أن لغة دلفي تنحصر في لغة الباسكال القديمة مضافا إليها بعض المكونات)، فضلا عن إضافات أخرى مثل الأقسام (أو الدوال أو الأنماط) المورثة (Generics Class/Function/Type) مثل:
PHP كود :
type
  TGenericType
<AnyType> = class
    
FData: AnyType;
  
end; 
وغيرها...، ولا تتحدث عن المكونات والأقسام والأنماط الجديدة، إضافة إلى التوافق (أو المواءمة Compatibility) و...و...
بالتوفيق.[/COLOR]


الحلقة التكرارية ForLoopRamblings For...in - Dr.MOT - 09-07-2009

السلام عليكم ,,

أخي الكريم هل يمكن أن تعطي مثالا آخر ؟

وجزاك الله كل خير


الحلقة التكرارية ForLoopRamblings For...in - me_delphi - 10-07-2009

بارك الله فيك

دلفي في تطور ...يكفي فقط النظر الى البرامج التي صممت و لازالت تصمم بهده اللغة


الحلقة التكرارية ForLoopRamblings For...in - kachwahed - 11-07-2009

إقتباس :أخي الكريم هل يمكن أن تعطي مثالا آخر ؟

مثال مع TStrings: ضع في مشروع جديد مكونات: ListBox1 واكتب فيه مجموعة من الألوان مثلا، Edit1 للمقارنة، واكتب في حدث النقر على Button1 ما يلي:
PHP كود :
procedure TForm1.Button1Click(Sender: TObject);
var
  
S: string;
begin
  
for S in ListBox1.Items do
    if 
Edit1.Text = S then begin
      ShowMessage
('Valid Color');
      Exit;
    
end;
    
ShowMessage('Invalid Color!');
end; 



الحلقة التكرارية ForLoopRamblings For...in - TF6M - 11-07-2009

السلام عليكم ,,
جميل جدا ... هكذا نختصر الكثير بارك الله فيك .


الحلقة التكرارية ForLoopRamblings For...in - kachwahed - 11-07-2009

الآن وظيفة منزلية Big Grin
(قولوا لي منذ متى وأنت تعطينا وظائف :p)
إبحثوا جميعا عن Generics Class في Delphi2009 وما هي الفائدة منها وكيف استعمالها ؟؟؟



الحلقة التكرارية ForLoopRamblings For...in - Dr.MOT - 11-07-2009

kachwahed كتب :

مثال مع TStrings: ضع في مشروع جديد مكونات: ListBox1 واكتب فيه مجموعة من الألوان مثلا، Edit1 للمقارنة، واكتب في حدث النقر على Button1 ما يلي:
PHP كود :
procedure TForm1.Button1Click(Sender: TObject);
var
  
S: string;
begin
  
for S in ListBox1.Items do
    if 
Edit1.Text = S then begin
      ShowMessage
('Valid Color');
      Exit;
    
end;
    
ShowMessage('Invalid Color!');
end; 

هل الكود الذي وضعت يكافئ :

PHP كود :
procedure TForm1.Button1Click(Sender: TObject);
var
  
S: string;
  
i : integer;
begin
  
for i := 0 to ListBox1.Items do
    if 
Edit1.Text[i] = S then begin
      ShowMessage
('Valid Color');
      Exit;
    
end;
    
ShowMessage('Invalid Color!');
end; 

وآآسف جدا لأني اتعبتك معي ولكن حصل عندي التباس بسيط

والسلام عليكم


الحلقة التكرارية ForLoopRamblings For...in - kachwahed - 11-07-2009

إقتباس :وآآسف جدا لأني اتعبتك معي ولكن حصل عندي التباس بسيط
لا عليك أخي.

بل يكافئ هذا:
PHP كود :
procedure TForm1.Button1Click(Sender: TObject);
var
  
i : integer;
begin
  
for i := 0 to ListBox1.Items.Count-1 do
    if 
Edit1.Text = ListBox1.Items[i] then begin
      ShowMessage
('Valid Color');
      Exit;
    
end;
    
ShowMessage('Invalid Color!');
end; 
لا زلت انتظر Generics في Delphi 2009.



الحلقة التكرارية ForLoopRamblings For...in - TF6M - 12-07-2009

وجدت كتاب حول الموضوع ... لم أطالعه بعد ؟؟ .
في إنتظارك هههههه ,,


الحلقة التكرارية ForLoopRamblings For...in - kachwahed - 12-07-2009

إقتباس :وجدت كتاب حول الموضوع ... لم أطالعه بعد ؟؟ .
تقصد الكتاب الفرنسي من Developpez.com، صح؟