powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / VC++ сортировка CListCtrl
10 сообщений из 10, страница 1 из 1
VC++ сортировка CListCtrl
    #33416060
Mashusya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LVFINDINFO info;
info.flags = LVFI_STRING;
LPCTSTR lpszmyString;
int index;
for (i=0;i!=m_WndVariable.GetItemCount();i++)
{
UpdateData(TRUE);
lpszmyString=m_WndVariable.GetItemText(i,0);

info.psz=lpszmyString;
while ((index=m_WndVariable.FindItem(&info)) != -1)
{
m_WndVariable.DeleteItem(index);
}
UpdateData(FALSE);
}

почему-то не сортирует, m_WndVariable- переменная, связанная с ListCtrl'ом, интересует сортировка первого столбца (нулевого)
...
Рейтинг: 0 / 0
VC++ сортировка CListCtrl
    #33416061
Mashusya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
точнее это не сортировка, нужно удалить повторяющиеся строчки, те если есть несколько одинаковых строк, то оставить только одну из них
...
Рейтинг: 0 / 0
VC++ сортировка CListCtrl
    #33416065
Фотография Землекоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно обнулить LVFINDINFO info = {0}; что бы не было случайных значений в полях, которые не используются.
И поиск нужно начинать не с начала списка, а со следующего за ним. Иначе все элементы, которые дублируются, сотрете.

Код: plaintext
1.
2.
3.
while ((index=m_WndVariable.FindItem(&info, i+ 1 )) != - 1 )
{
m_WndVariable.DeleteItem(index);
}
...
Рейтинг: 0 / 0
VC++ сортировка CListCtrl
    #33416086
Mashusya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
все равно ничего не удаляет.. вообще
...
Рейтинг: 0 / 0
VC++ сортировка CListCtrl
    #33416117
Фотография Землекоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
	int i;
	LVFINDINFO info;
	info.flags = LVFI_STRING;
	CString myString;
	int index;
	for (i= 0 ;i!=m_WndVariable.GetItemCount();i++)
		{	
		myString=m_WndVariable.GetItemText(i, 0 );

		info.psz=(LPCSTR)myString;
		while ((index=m_WndVariable.FindItem(&info,i+ 1 )) != - 1 )
			{
			m_WndVariable.DeleteItem(index);
			}
		}


GetItemText возвращает объект CString, а не указатель на строку. UpdateData вызывать не нужно, тк m_WndVariable это control.
...
Рейтинг: 0 / 0
VC++ сортировка CListCtrl
    #33416412
Mashusya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уже лучше, но не намного..
в общем если поместить туда 5 одинаковых строчек, то 2 или 3 он из них удалит
если тройку поместить, может удалить одну строчку, может нет. .=(
...
Рейтинг: 0 / 0
VC++ сортировка CListCtrl
    #33416456
roman10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mashusyaуже лучше, но не намного..
в общем если поместить туда 5 одинаковых строчек, то 2 или 3 он из них удалит
если тройку поместить, может удалить одну строчку, может нет. .=(
В таких случаях, нужно сначала найти номера всех элементов, удовлетворяющих условию, а потом их оптом удалить. Потому, что операция удаления изменяет номера элементов.
...
Рейтинг: 0 / 0
VC++ сортировка CListCtrl
    #33416480
Фотография Землекоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mashusyaуже лучше, но не намного..
в общем если поместить туда 5 одинаковых строчек, то 2 или 3 он из них удалит
если тройку поместить, может удалить одну строчку, может нет. .=(

Исправьте i+1 на i
Код: plaintext
1.
while ((index=m_WndVariable.FindItem(&info,i)) != - 1 )
...
Рейтинг: 0 / 0
VC++ сортировка CListCtrl
    #33416491
Фотография Землекоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я забыл, что в FindItem начальный индекс исключен из поиска. MFC временами грешит отсутствием логики.
...
Рейтинг: 0 / 0
VC++ сортировка CListCtrl
    #33416748
Mashusya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, получилось, надо не i+1,а i
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / VC++ сортировка CListCtrl
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]