Помощ премахнете празни редове от падащ списък а
Помощ премахнете празни редове от ListBox на
Кажи ми, как може за линия, за да премахнете от ListBox "и всички празни оттича се опитали по този начин:
защото: = 0 до Listbox1.Items.Count направи
ако Listbox2.Items [I] = "", тогава
Listbox1.Items.Delete (I);
Но упорито се появи Списък грешка извън границите (92), а аз имам само 72 елементи в listbokse.
Хардън като строеви устав.
защото: = Listbox1.Items.Count - 1 Downto 0 направи
защото: = Listbox1.Items.Count -1downto 0 задачи
Чувство, което имам е, че не се получи нищо. трябва
защото: = 0 до Listbox1.Items.Count-1 направи
ако Listbox2.Items [I] = "", тогава
започвам
Listbox1.Items.Delete (I);
декември (I); // или I: = I-1;
приключи;
Точно в този обобщен такава структура, дори и компилаторът няма да мине.
Между другото, memya отдавна се интересуват от въпроса: защо
защото: = Listbox1.Items.Count-1 Downto 0 направи.
по-скоро
защото: = 0 до Listbox1.Items.Count-1 направи.
Винаги приемайте втора и davolen.
Защото Listbox1.Items.Count-1 vyschislyaetsya веднъж, а ако в цикъла за премахване на обекта, който да разбере какво се случва ;-)
Помислих си, че всеки път, когато се изчислява :(. И това е вярно. Благодарим Ви за просветление :)
във всеки ListBox1.Items.Count - 1, след като разглежда
В горното изпълнение на циклите за I: = 0 до ListBox1.Items.Count - 1 направят;
повече се предпочита (I байт тип тук)
// за I: = 0 до ListBox1.Items.Count - 1 направи;
// включени байт PTR [Ь]
// декември др
// jnz - $ 0A
// за I: = ListBox1.Items.Count - 1 Downto 0 направи;
// декември байт PTR [EBX]
// CMP байт PTR [EBX] $ ее
// jnz - $ 07
За целите на контрол на изпълнението на цикъла, изразите InitialValue и finalValue се оценяват само по веднъж. преди началото на цикъла.