11-02-2018, 09:56 AM (آخر تعديل لهذه المشاركة: 11-02-2018, 10:22 AM بواسطة لؤي.)
السلام عليكم شكرا أخي فاتح على المساعدة
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;
11-02-2018, 11:33 AM (آخر تعديل لهذه المشاركة: 11-02-2018, 11:39 AM بواسطة S.FATEH.)
السلام عليكم
الكود به الكثير من الاخطاء قسم العمليات الى عمليات اصغر باستخدام 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 على المشاركة المفيدة1 user says Thank You to S.FATEH for this post • chardoneret
فتح الله عليك و رزقك العلم النافع
الذي أريده هو كالتالي
بعد تحميل القائمة و تكون عشوائية
نقوم بتوزيع القائمة التي تحوي 12 قاعة (و هي متغيرة) بعد التوزيع على العمود prof01 ينتقل إلى العمود الثاني prof02 ثم الثالث و الفائض يبقى في القائمة
أرجو الإفادة من فضلكم
11-02-2018, 01:56 PM (آخر تعديل لهذه المشاركة: 11-02-2018, 02:20 PM بواسطة S.FATEH.)
السلام عليكم جرب بهذه الطريقة
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;
السلام عليكم
ان شاء الله تكون وجدت ضالتك
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 على المشاركة المفيدة1 user says Thank You to S.FATEH for this post • chardoneret
كفيت و وفيت و الله يا أخي فاتح لقد سألت لك ربي النجاح و الفلاح لك و لذريتك و لأهلك و لوالديك
ما عساي أقول بارك الله فيك و جعلك الله مفتاحا للخير
بارك الله فيك كما بورك في الزيت أكلا و أدماََ وإنارة للمصابيح