delphi4arab منتديات دلفي للعرب
خطأ indice liste hors limite - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : خطأ indice liste hors limite (/showthread.php?tid=9172)



خطأ indice liste hors limite - chardoneret - 10-02-2018

indice liste hors limite
و هو متغير أحيانا 44 ثم 67 ........
اعرف أن الخلل في الحلقة التكرارية لكن لم أتمكن من رصده
ارجو منكم الإفادة و لكم جزيل الشكر
[صورة: 492415233.png]


RE: خطأ indice liste hors limite - S.FATEH - 11-02-2018

السلام عليكم انقل الكود الذي به خطأ هنا في المنتدى ...


RE: خطأ indice liste hors limite - chardoneret - 11-02-2018

السلام عليكم شكرا أخي فاتح على المساعدة

PHP كود :
var
 s,i: Word;
 f: Integer;
begin
 Randomize
;
 f := Random(lst1.Items.Count - 1);

   ADOTable1.open;
 begin
   while 
(not (ADOTable1.Eof)) do
   for i := 0 to f do
   begin
     try
       lst1
.Items.BeginUpdate;
       for s := 0 to lst1.items.count - 1 do
       ADOTable1.edit;
       begin
        ADOTable1
.FieldByName('PROF01').Text := lst1.Items[f];
         ADOTable1.Post;
       ADOTable1.Next;
       lst1.Items.Delete(i);
         lst1.ItemIndex := 0;
       end;
       finally
       lst1
.Items.EndUpdate;
       lst1.Refresh;
     end;
     show_info;
   end;
   ADOTable1.First;
 end;
end; 



RE: خطأ indice liste hors limite - S.FATEH - 11-02-2018

السلام عليكم
الكود به الكثير من الاخطاء قسم العمليات الى عمليات اصغر باستخدام procedures و function كمثال فقط عن الاخطاء المتواجدة عند الحذف من اللائحة استخدم downto بدل الذي فعلته لم افهم الكود جيدا لكن جرب هذا
PHP كود :
var
 
s,i: Word;
 
f: Integer;
begin
 Randomize
;
 
f := Random(lst1.Items.Count - 1);
 
ADOTable1.open;
 
ADOTable1.First;
 while (
not (ADOTable1.Eof)) do
 
begin
   
for i := 0 to f do
 
  begin
     lst1
.Items.BeginUpdate;
 
    for s := lst1.items.count - 1 downto 0 do
 
    begin
       ADOTable1
.edit;
 
      ADOTable1.FieldByName('PROF01').Text := lst1.Items[f];
 
      ADOTable1.Post;
 
      lst1.Items.Delete(i);
 
    end;
 
      lst1.Items.EndUpdate;
 
      lst1.Refresh;
 
      show_info;
 
  end;
 
ADOTable1.Next;
 
end;
end; 



RE: خطأ indice liste hors limite - chardoneret - 11-02-2018

فتح الله عليك و رزقك العلم النافع
الذي أريده هو كالتالي
بعد تحميل القائمة و تكون عشوائية
نقوم بتوزيع القائمة التي تحوي 12 قاعة (و هي متغيرة) بعد التوزيع على العمود prof01 ينتقل إلى العمود الثاني prof02 ثم الثالث و الفائض يبقى في القائمة
أرجو الإفادة من فضلكم


RE: خطأ indice liste hors limite - S.FATEH - 11-02-2018

السلام عليكم جرب بهذه الطريقة
PHP كود :
var
 
 I, J: Integer;
begin
  Randomize
;
 
 for I := 0 to ADOTable1.FieldCount - 1 do
 
 begin
    if 
(I = 0) or (I = 1) then Continue;
 
   for J := 0 to 28 do
 
   begin
      ADOTable1
.Insert;
 
     ADOTable1.Fields[I].AsString := lst1.Items[Random(lst1.Items.Count - 1)];
 
     ADOTable1.Post;
 
   end;
 
 end;
end; 

السلام عليكم هذا الحل افضل
PHP كود :
var
 
 I, J: Integer;
begin
  Randomize
;
 
 for I := 0 to ADOTable1.FieldCount - 1 do
 
 begin
    ADOTable1
.First;
 
   if (I = 0) or (I = 1) then Continue;
 
   for J := 0 to 28 do
 
   begin
      ADOTable1
.Edit;
 
     ADOTable1.Fields[I].AsString := lst1.Items[Random(lst1.Items.Count - 1)];
 
     ADOTable1.Post;
 
     ADOTable1.Next;
 
   end;
 
 end;
end; 

السلام عليكم
ان شاء الله تكون وجدت ضالتك   Cool
PHP كود :
var
 
 I, J, R: Integer;
begin
  Randomize
;
 
 for I := 0 to ADOTable1.FieldCount - 1 do
 
 begin
    ADOTable1
.First;
 
   if (I = 0) or (I = 1) then Continue;
 
   for J := 0 to ADOTable1.RecordCount - 1 do
 
   begin
      ADOTable1
.Edit;
 
     if lst1.Items.Count = 0 then exit;
 
     R := Random(lst1.Items.Count - 1);
 
     ADOTable1.Fields[I].AsString := lst1.Items[R];
 
     lst1.Items.Delete(R);
 
     ADOTable1.Post;
 
     ADOTable1.Next;
 
   end;
 
 end;
end; 



RE: خطأ indice liste hors limite - chardoneret - 12-02-2018

كفيت و وفيت و الله يا أخي فاتح لقد سألت لك ربي النجاح و الفلاح لك و لذريتك و لأهلك و لوالديك
ما عساي أقول بارك الله فيك و جعلك الله مفتاحا للخير
بارك الله فيك كما بورك في الزيت أكلا و أدماََ وإنارة للمصابيح