delphi4arab منتديات دلفي للعرب

نسخة كاملة : الحلقة التكرارية ForLoopRamblings For...in
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
[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]
السلام عليكم ,,

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

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

دلفي في تطور ...يكفي فقط النظر الى البرامج التي صممت و لازالت تصمم بهده اللغة
إقتباس :أخي الكريم هل يمكن أن تعطي مثالا آخر ؟

مثال مع 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; 
السلام عليكم ,,
جميل جدا ... هكذا نختصر الكثير بارك الله فيك .
الآن وظيفة منزلية Big Grin
(قولوا لي منذ متى وأنت تعطينا وظائف :p)
إبحثوا جميعا عن Generics Class في Delphi2009 وما هي الفائدة منها وكيف استعمالها ؟؟؟
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; 

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

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

بل يكافئ هذا:
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.
وجدت كتاب حول الموضوع ... لم أطالعه بعد ؟؟ .
في إنتظارك هههههه ,,
إقتباس :وجدت كتاب حول الموضوع ... لم أطالعه بعد ؟؟ .
تقصد الكتاب الفرنسي من Developpez.com، صح؟
الصفحات : 1 2