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

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

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2010, 14:15   #1
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию перенести строки из Listbox2 в Listbox1

Что-то у меня код:
Код:
list.Items.Assign(list1.Items);
вываливается с ошибкой:
Цитата:
EStingListError with message 'List index out of bounds (0)
Процесс происходит следующим образом. Запускается процедура, которая берет по порядку каждую строку list преобразует ее в нужный формат и записывает в list1. По окончании, я пытаюсь перенести получившиеся данные в исходный list, но выдает ошибку... в чем дело не пойму. Помогите, пожалуйста, кто чем может
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 16.08.2010, 14:21   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

list.Items:=list1.Items;
не?...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.08.2010, 14:24   #3
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
list.Items:=list1.Items;
не?...
не... те же яйца...
Маленькая ремарка. Вставил в процедуру обработки строк Вывод сообщения с получившимся значением:
Код:
      ShowMessage(list1.Items[i]);
Всё показывает, как надо, т.е. list1 заполняется.
Но при попытке перенести - ошибка.
Так вот, для эксперимента, взял третий list с данными и код:
Код:
  list.Items.Assign(list2.Items);
работает...

А мне надо, чтобы только два list'a было... третий ну нафиг не нужен. будут идеи?
Никогда не знаешь, где тебе повезет... (Фрай)

Последний раз редактировалось DIgorevich; 16.08.2010 в 14:39.
DIgorevich вне форума Ответить с цитированием
Старый 16.08.2010, 14:45   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Тогда вопрос ребром:
Ты пишешь:
Цитата:
которая берет по порядку каждую строку list преобразует ее в нужный формат и записывает в list1
А почему не записывать сразу в list на то место откуда взято?
покажи как ты процедуру свою реализовал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.08.2010, 14:51   #5
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

не записываю сразу в list, потому как список длинный и мерцание будет происходить...
Код:
var
  n,i:Integer;
  text:string;
Begin
  for i:=0 to list.Items.Count-1 do
    begin
      text:=list.Items[i];
        n:=Pos('|', text); // здесь ищем разделитель - '|'
        If n>0 Then
          Begin
            text:=Copy(text, 1, n-1);
          End;
      list1.Items[i] :=text+'|'+dlit(list.Items[i]);
      ShowMessage(list1.Items[i]);//здесь показывает всё правильно
    end;
   list.Items.Assign(list1.Items);
dlit - процедура высчитывания длины файла указанного в списке.
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 16.08.2010, 15:03   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
и мерцание будет происходить...
Дружище, BeginUpdate и EndUpdate еще никто не отменял
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.08.2010, 15:05   #7
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Дружище, BeginUpdate и EndUpdate еще никто не отменял
Спасибо, конечно
Да фиг с ним с мерцанием... пока идет обработка строк, проге работать надо. да и не в этом суть.
Но Assign все равно не пашет. Ради интереса сделал так вместо него:
Код:
      list1.Items.SaveToFile('1.tt');

   list.Items.LoadFromFile('1.tt');
и всё заработало... мистика какая-то...
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 16.08.2010, 15:10   #8
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

Вот:
list1.Items.Assign(list2.Items);
uberchel вне форума Ответить с цитированием
Старый 16.08.2010, 15:12   #9
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Цитата:
Сообщение от uberchel Посмотреть сообщение
Вот:
list1.Items.Assign(list2.Items);
а я по-вашему не так делал ??
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 16.08.2010, 15:15   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
DIgorevich
Как хочешь конечно, на твоем месте я делал бы это в потоке и к тому же писал изменения в строку:
Код:
s :=s+text+'|'+dlit(list.Items[i])+#13#10;
После чего строку эту кидал в ЛистБокс
Код:
 list.Items.Text:=s;
кстати. Ты уверен что слово list не зарезервировано уже кем-то?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10
Из трех листов перенести строки по условию Romuald Microsoft Office Excel 3 18.03.2009 16:09
Как перенести определённые данные из строки Kamikaze13 Microsoft Office Excel 3 21.11.2008 10:57
Перенести в новую книгу отмеченые строки Rom1k06 Microsoft Office Excel 11 31.07.2008 12:22
Перенести слова из массива в строки Xardas Паскаль, Turbo Pascal, PascalABC.NET 2 04.05.2008 12:34