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


الملفات المرفقة
.rar   TAFWIDJ.rar (الحجم : 98 ك ب / التحميلات : 12)
الرد
#2
السلام عليكم انقل الكود الذي به خطأ هنا في المنتدى ...
و لرب نازلة يضيق لها الفتى ذرعا و عند الله منها المخرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج
[-] كل من 1 user says قال شكرا ل S.FATEH على المشاركة المفيدة
  • chardoneret
الرد
#3
السلام عليكم شكرا أخي فاتح على المساعدة

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; 
الرد
#4
السلام عليكم
الكود به الكثير من الاخطاء قسم العمليات الى عمليات اصغر باستخدام 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; 
و لرب نازلة يضيق لها الفتى ذرعا و عند الله منها المخرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج
[-] كل من 1 user says قال شكرا ل S.FATEH على المشاركة المفيدة
  • chardoneret
الرد
#5
فتح الله عليك و رزقك العلم النافع
الذي أريده هو كالتالي
بعد تحميل القائمة و تكون عشوائية
نقوم بتوزيع القائمة التي تحوي 12 قاعة (و هي متغيرة) بعد التوزيع على العمود prof01 ينتقل إلى العمود الثاني prof02 ثم الثالث و الفائض يبقى في القائمة
أرجو الإفادة من فضلكم
الرد
#6
السلام عليكم جرب بهذه الطريقة
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; 
و لرب نازلة يضيق لها الفتى ذرعا و عند الله منها المخرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج
[-] كل من 1 user says قال شكرا ل S.FATEH على المشاركة المفيدة
  • chardoneret
الرد
#7
كفيت و وفيت و الله يا أخي فاتح لقد سألت لك ربي النجاح و الفلاح لك و لذريتك و لأهلك و لوالديك
ما عساي أقول بارك الله فيك و جعلك الله مفتاحا للخير
بارك الله فيك كما بورك في الزيت أكلا و أدماََ وإنارة للمصابيح
الرد


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


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