Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/19: Рейтинг темы: голосов - 19, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 16

Удаление дубликатов по домену

28.03.2011, 22:13. Показов 4034. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно удалять дуликаты по домену в Memo такого типа
site.com/text
site1.com/text
site.com/text
site1.com/text
site2.com/text
Нужно чтобы остовалось так
site.com/text
site1.com/text
site2.com/text
Но уменя получилось так
site.com/
site1.com/
site2.com/

Помогите с кодом .

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm2::Button3Click(TObject *Sender)
{  AnsiString s,b;
      for  (int i = 0;i < Memo1->Lines->Count;i++)
      {
        s= Memo1->Lines->Strings[i].SubString(1,Memo1->Lines->Strings[i].Pos("/"));
          for (int j = 0; j< Memo1->Lines->Count; j++) {
           b= Memo1->Lines->Strings[i].SubString(1,Memo1->Lines->Strings[j].Pos("/"));
            if (s == b   ) {
                 Memo1->Lines->Delete(j) ;
            }
 
              }
            Memo1->Lines->Add(s) ;
      }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.03.2011, 22:13
Ответы с готовыми решениями:

Поиск и удаление дубликатов и инвертированных значений
Доброго времени суток! У меня 2 вопроса: Имеются параметры(например работоспособность телефона в виде двоичного кода): 1 0 1 0 1...

Удаление дубликатов + ассинхронное удаление из другой таблицы
Есть две таблицы tbl_content : id, title tbl_pics : id, picname 1. Нужно удалить дубликаты &quot;title&quot; из таблицы...

Удаление дубликатов
Вопрос, как удалить дубликаты в столбце. Интересует удаление и дубликатов, и оригиналов дубликатов. Другими словами, если есть два...

31
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
28.03.2011, 22:34
Занесите строки из Мемо в цикле в StringList, укажите StringList->Duplicate = false, Memo->Clear(); , Memo->Text = StringList->Text;

Добавлено через 6 минут
или проще
C++
1
2
3
4
StringList->Text = Memo->Text;
StringList->Duplicate = false;
Memo->Clear();
Memo->Text = StringList->Text;
1
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 16
28.03.2011, 22:36  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
Занесите строки из Мемо в цикле в StringList, укажите StringList->Duplicate = false, Memo->Clear(); , Memo->Text = StringList->Text;

Добавлено через 6 минут
или проще
C++
1
2
3
4
StringList->Text = Memo->Text;
StringList->Duplicate = false;
Memo->Clear();
Memo->Text = StringList->Text;
А можно пример в писменном виде , если вас незатруднит .
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
29.03.2011, 00:04
это и есть пример в письменном виде
C++
1
2
3
4
5
6
// при нажатии кнопки
TStringList list = new TStringList;
list->Text = Memo1->Text;
list->Duplicate = false;
Memo1->Clear();
Memo1->Text = list->Text;
Добавлено через 1 час 22 минуты
и не забыть бы
C++
1
2
delete list;
list = NULL;
1
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 16
29.03.2011, 00:26  [ТС]
Неработает уменя Ваш код

C++
1
2
3
4
5
6
7
TStringList *list = new TStringList;
list->Text = Memo1->Text;
list->Duplicates =false;
Memo1->Clear();
Memo1->Text = list->Text;
delete list;
list = NULL;
Дубли построкам я удаляю так :

C++
1
2
3
4
5
for  (int i = 0;i < Memo1->Lines->Count;i++)
{
  if  (Memo1->Lines->IndexOf(Memo1->Lines->Strings[i])<i)  {
      Memo1->Lines->Delete(i) ;
      }

А мне нужно удалять дубли по домену .
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
29.03.2011, 00:29
как не работае ?
0
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 16
29.03.2011, 00:37  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
как не работае ?
Вот такой код работает нормально
for (int i = 0;i < Memo1->Lines->Count;i++)
{
if (Memo1->Lines->IndexOf(Memo1->Lines->Strings[i])<i) {

Memo1->Lines->Delete(i) ;
}
Label2->Caption=" "+IntToStr(Memo1->Lines->Count);
Вот этот неудаляет нечего
TStringList *list = new TStringList;
list->Text = Memo1->Text;
list->Duplicates =dupIgnore;
Memo1->Clear();
Memo1->Text = list->Text;
delete list;
list = NULL;
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
29.03.2011, 01:01
ты не поверишь - удаляет
C++
1
2
3
4
5
6
7
8
9
TStringList *list = new TStringList;
list->Sorted = true;
list->Duplicates = dupIgnore;
list->Text = Memo1->Text;
// ShowMessage(list->Text);
Memo1->Clear();
Memo1->Text = list->Text;
delete list;
list = NULL;
Добавлено через 8 минут
другой код из этого
for (int i = 0;i < Memo1->Lines->Count;i++)
{
for (int i = 0;i < Memo1->Lines->Count;i++)
{
for (int i = 0;i < Memo1->Lines->Count;i++)
{
for (int i = 0;i < Memo1->Lines->Count;i++)
{
for (int i = 0;i < Memo1->Lines->Count;i++)
{
for (int i = 0;i < Memo1->Lines->Count;i++)
{
for (int i = 0;i < Memo1->Lines->Count;i++)
{
сделал это
for (int i = 0;i < Memo1->Lines->Count;i++)
{
{
{
{
{
{
{
0
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 16
29.03.2011, 01:13  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
ты не поверишь - удаляет
C++
1
2
3
4
5
6
7
8
9
TStringList *list = new TStringList;
list->Sorted = true;
list->Duplicates = dupIgnore;
list->Text = Memo1->Text;
// ShowMessage(list->Text);
Memo1->Clear();
Memo1->Text = list->Text;
delete list;
list = NULL;
Добавлено через 8 минут
другой код из этогосделал это
Да заработал , я забыл прописать list->Sorted = true;

Вы можете предложите решение по удалению дубликатов по домену ( по части строки) , а не построке . Ну просто очень нужно .
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
29.03.2011, 01:15
решение по части строки - ваше же, в самом начале темы, все сделано правильно, что не устраивает ?
0
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 16
29.03.2011, 01:28  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
решение по части строки - ваше же, в самом начале темы, все сделано правильно, что не устраивает ?
Суть втом , что когда удаляется дубликат , допустим такого вида :
https://www.cyberforum.ru/newr... ply&p=1497
Мне возвращается часть строки , от 1символа до Pos("/") www.cyberforum.ru/ , а мне нужно чтобы вернуло всю строку , а не часть строки . что сдесь можно придумать ?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
29.03.2011, 01:33
например, ищите Memo->Lines->Strings[i].SubString("site1") , и если строка содержит подстроку - удаляйте всю строку.
0
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 16
29.03.2011, 01:46  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
например, ищите Memo->Lines->Strings[i].SubString("site1") , и если строка содержит подстроку - удаляйте всю строку.
Я именно так и делаю Memo1->Lines->Delete(j) ; // удаляем строку
но почемуто , когда в списке много дубликатов ( если их в списке 20 одинаковых строк) то в в Memo остается не одна , а 3 строки ) Ну и естественно чем больше в списке дубликатов одного вида , тембольше строк остается .
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
29.03.2011, 02:04
рабочий код покажите, с целью проверки в Билдере, и используйте при вставке кода тег [ CPP]без пробелов[ /CPP]
0
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 16
29.03.2011, 02:24  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
рабочий код покажите, с целью проверки в Билдере, и используйте при вставке кода тег [ CPP]без пробелов[ /CPP]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm2::Button3Click(TObject *Sender)
{ AnsiString s,b;
for  (int i = 0;i < Memo1->Lines->Count;i++)
{
s= Memo1->Lines->Strings[i].SubString(1,Memo1->Lines->Strings[i].Pos("/"));
for (int j = i; j< Memo1->Lines->Count; j++) {
b= Memo1->Lines->Strings[i].SubString(1,Memo1->Lines->Strings[j].Pos("/"));
if (s == b   ) {
 Memo1->Lines->Delete(j) ;
}
}
Memo1->Lines->Add( s) ;
}
}
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
29.03.2011, 02:34
гм, у меня этот код не строки удаляет, а text из части строк
чем вариант со списком не устраивает?
0
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 16
29.03.2011, 02:50  [ТС]
Цитата Сообщение от iuo Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm2::Button3Click(TObject *Sender)
{ AnsiString s,b;
for  (int i = 0;i < Memo1->Lines->Count;i++)
{
s= Memo1->Lines->Strings[i].SubString(1,Memo1->Lines->Strings[i].Pos("/"));
for (int j = i; j< Memo1->Lines->Count; j++) {
b= Memo1->Lines->Strings[i].SubString(1,Memo1->Lines->Strings[j].Pos("/"));
if (s == b   ) {
 Memo1->Lines->Delete(j) ;//если есть дубликат то удаляем(удаляются все дубликаты)
}
}
Memo1->Lines->Add( s) ;// записываем строку обратно (Все такие строки удалены)
}
}
Вот так надо
CPP][Memo1->Lines->Delete(j--) ;[/CPP]

Добавлено через 4 минуты
я вот немного код подмарафетил , так вроде лучше , но проблема таже обрезается весь текст после www.site.com/
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void __fastcall TForm2::Button3Click(TObject *Sender)
{    TStringList *list = new TStringList;
  list->Text = Memo1->Text;
   list->Sorted = true;
   AnsiString s,b;
      for  (int i = 0;i < list->Count;i++)
      {
            s= list->Strings[i].SubString(1,list->Strings[i].Pos("/"));
              for (int j = i; j< list->Count; j++) {
               b= list->Strings[j].SubString(1,list->Strings[j].Pos("/"));
                if (s == b   ) {
                    list->Delete(j--) ; // удаляем строку
                }
 
              }
 
            list->Add(s);// записываем строку обратно (Все такие строки удалены)
            Memo1->Clear();
            Memo1->Text = list->Text;
 
      }
 
   delete list;
   list = NULL;
}
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
29.03.2011, 02:51
видимо, я так и не понял вашей задачи и вашего кода
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
29.03.2011, 02:52
проблема таже обрезается весь текст после
это не проблема - код делает в точности то, что вы ему сказали делать
и все же, чем не устраивает вариант со списком ?
Миниатюры
Удаление дубликатов по домену   Удаление дубликатов по домену  
0
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 16
29.03.2011, 03:02  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
видимо, я так и не понял вашей задачи и вашего кода
Ну вот смотите , есть уменя список с сылками

мне нужно сделать так , чтобы удалились строки с дубликатами по домену ,ну к примеру из этого списка строки с доменом www.cyberforum.ru/ и остлась одна строка с этим доменом : www.cyberforum.ru/pascal/

Вот такая вот задача .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.03.2011, 03:02
Помогаю со студенческими работами здесь

Удаление дубликатов
Как организовать удаление дубликатов формулой? Такой странный вопрос.

Удаление дубликатов
Как удалить из базы дубликаты, т.е. primati key у них отличаются, а отстальный данные совпадают?

Удаление дубликатов
namespace ConsoleApp3 { class Program { static void Main(string args) { int c; ...

Удаление дубликатов
Всем привет Пробую зачистить строки от повторений Текст строк примерно такой RRs.Mmm.sss.20190124_185954.txt 19:00:01...

Удаление дубликатов
Как с помощью макроса удалить дубликаты( не одну одинаковую линию из двух как в Экселе) а две Пример: 123456 234516 123456 Должна...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru