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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2011, 22:48   #1
Nice42ru
Форумчанин
 
Регистрация: 25.10.2009
Сообщений: 131
По умолчанию Удалить из Listbox delphi

Всем здравствуйте, подскажите пожалуйста как программно удалить определенное слово из Listbox?
Nice42ru вне форума Ответить с цитированием
Старый 11.03.2011, 22:54   #2
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

както так
Код:
listBox1.Item[x] := delete(listBox1.Item[x], post('slovo', listBox1.Item[x]), post('slovo', listBox1.Item[x]) + length('slovo'));
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 11.03.2011, 23:26   #3
Nice42ru
Форумчанин
 
Регистрация: 25.10.2009
Сообщений: 131
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
x: Integer;
begin
listBox1.Items[x] := delete(listBox1.Items[x], pos('slovo', listBox1.Items[x]), pos('slovo', listBox1.Items[x]) + length('slovo'));
end;



[Error] Constant object cannot be passed as var parameter
Не работает
Nice42ru вне форума Ответить с цитированием
Старый 12.03.2011, 06:40   #4
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

попробуй
Код:
n := listbox.items.indexof('slovo');
if n <> -1
  then listbox.items.delete(n);
и вообще справка рулит, намек - F1

а вот приведенный код даже по логике ерунда... итему за номером х присвоить РЕЗУЛЬТАТ ПРОЦЕДУРЫ удаления подстроки в строке

УПД
аа вон оно что, если только конкретное слово из строки, то обращайся к свойсту listbox.items.text, тут уже нормально подойдёт процедура описанная, но только не надо её никуда присваивать

Последний раз редактировалось phomm; 12.03.2011 в 06:52.
phomm вне форума Ответить с цитированием
Старый 12.03.2011, 06:55   #5
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Цитата:
а вот приведенный код даже по логике ерунда... итему за номером х присвоить РЕЗУЛЬТАТ ПРОЦЕДУРЫ удаления подстроки в строке
полностью согласен, чет я сглупил
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
str: string;
begin
str := listBox1.Items[listBox1.ItemIndex];
delete(str, pos('slovo', str), pos('slovo', str) + length('slovo'));
listBox1.Items[listBox1.ItemIndex] := str;
end;
PS. автор, а на счет ItemIndex вместо X можно было и самому додумаца
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 12.03.2011, 07:21   #6
Nice42ru
Форумчанин
 
Регистрация: 25.10.2009
Сообщений: 131
По умолчанию

Цитата:
Сообщение от ArtGrek Посмотреть сообщение
полностью согласен, чет я сглупил
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
str: string;
begin
str := listBox1.Items[listBox1.ItemIndex];
delete(str, pos('slovo', str), pos('slovo', str) + length('slovo'));
listBox1.Items[listBox1.ItemIndex] := str;
end;
PS. автор, а на счет ItemIndex вместо X можно было и самому додумаца
опять же, в этой строке
Код:
str := ListBox1.Items[ListBox1.ItemIndex];
возникает ошибка list index out of bounds (-1)
Nice42ru вне форума Ответить с цитированием
Старый 12.03.2011, 07:24   #7
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Цитата:
list index out of bounds (-1)
ета ошибка означает то что ты вышел за пределы массива, в данном случае масива строк лист бокса
вот проконтролируи ето
добавлено
ты выдели сперва нужную строку, а потом кнопку нажимаи
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 12.03.2011, 07:33   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
возникает ошибка
Код:
With listbox1 do if ItemIndex<>-1 then begin
 str := Items[ItemIndex];
 delete(str, pos('slovo', str), pos('slovo', str) + length('slovo'));
 Items[ItemIndex] := str;
end;
Идея понятна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.03.2011, 08:33   #9
Nice42ru
Форумчанин
 
Регистрация: 25.10.2009
Сообщений: 131
По умолчанию

Спасибо, но чтобы работал код мне нужно выделять строку самому, а я же указал что мне нужно программно удалять строку, тоесть клиент отсылает серверу код (serversocket1.socket.sendtext('del eteMyId' + id)) и сервер должен из Listbox'a удалить тот id который он прислал

Код:
if pos('deleteMyId', m) <> 0 then
  begin
m:= Socket.Recivetext;
Delete(m, 1, 10);
With UserList do if ItemIndex<>-1 then begin
 str := Items[ItemIndex];
 delete(str, pos(m, str), pos(m, str) + length(m));
 Items[ItemIndex] := str;
end;
    end;
Ваш код работает только в том случае, если я мышкой выделяю Id клиента в ListBoxe, заранее спасибо
Nice42ru вне форума Ответить с цитированием
Старый 12.03.2011, 08:37   #10
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

если ето происходит сразу после занесения, то логично предположить что надо обрашаца к последнеи строке,
ListBox.Items.Count - 1
VirusN13
ArtGrek вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить все значения Items в ListBox? quarty Общие вопросы Delphi 4 05.05.2020 21:49
ListBox (Delphi) CAMOBAP Помощь студентам 8 08.03.2011 22:51
Delphi,listbox. FCSM Помощь студентам 7 06.04.2010 14:48
Удалить указанный текст из ListBox Shouldercannon Общие вопросы Delphi 2 31.05.2009 18:10
Удалить не нужное из ListBox Shouldercannon Общие вопросы Delphi 7 20.12.2008 00:07