Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2014, 22:57   #1
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию ListBox,работа с двумя списками.

Помогите пожалуйста разобраться.Что в коде не то:
Код:
var i,n:integer;
begin
n:=ListBox1.Items.Count;
for i:=0 to n do
if ListBox1.Selected[i] then
begin
ListBox2.Items.Add(ListBox1.Items.Strings[i]);
ListBox1.Items.Delete(ListBox1.ItemIndex);
n:=n-1;
end;
Edit1.Text:=IntToStr(ListBox1.Items.Count);
Edit2.Text:= IntToStr(ListBox2.Items.Count);
end;
Код должен выполнять перемещение выделенных строк (1 или более) в другой ListBox
spectrum988 вне форума Ответить с цитированием
Старый 05.04.2014, 23:01   #2
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Так в чём проблема? Выход за границу индекса? Так и должно быть, после удаления общее количество данных изменяется. Измените цикл for i := n downto 0 do
ReportCube вне форума Ответить с цитированием
Старый 05.04.2014, 23:42   #3
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию

Изменил цикл на предложенный вами вариант,таже ошибка.
spectrum988 вне форума Ответить с цитированием
Старый 05.04.2014, 23:44   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

так бывает, не расстраивайтесь
eval вне форума Ответить с цитированием
Старый 05.04.2014, 23:51   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Код:
for i := ListBox1.Items.Count - 1 downto 0 do
  if ListBox1.Selected[i] then
  begin
    ListBox2.Items.Add(ListBox1.Items.Strings[i]);
    ListBox1.Items.Delete(i);
  end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 06.04.2014, 00:06   #6
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию

BDA большое спасибо,все работает.Я знал о том,что cчет строк в ListBox начинается с 0-я,но чуть ниже я проводил подсчет строк по каждому ListBox ,и у меня выводило верное количество.
spectrum988 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со списками LeNZZZ Microsoft Office Excel 1 21.11.2012 17:36
Работа со списками C# Serg94 Помощь студентам 4 04.05.2012 22:29
не понятная проблема с двумя Listbox'сами SonicBob Общие вопросы Delphi 2 15.08.2011 01:38
Нужен пример на Dilphi, перемещение строки между двумя listbox из одного в другой MaHTpug Помощь студентам 1 17.06.2010 21:25
работа со списками listbox(delphi) KaZaaM Помощь студентам 6 19.11.2009 22:42