Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/22: Рейтинг темы: голосов - 22, средняя оценка - 4.86
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1

Сравнение списков

17.02.2013, 01:35. Показов 4597. Ответов 50
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть 2 списка (стринг листа)
1 список

Code
1
2
3
4
5
6
1
2
3
1
1
2
и
2 список
Code
1
2
3
4
5
1
2
1
1
1
и в результате после сравнения в 3 списке должно выйти
Code
1
3
т.е не повторяющиеся строка, и без дубликата...
Может есть у кого какие либо идеи?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.02.2013, 01:35
Ответы с готовыми решениями:

Сравнение списков
Попросили на писать программу для сравнения списоков. Написал: TStringList *list1 = new TStringList; list1->Sorted =...

Сравнение списков
Добрый день. Есть два списка, которые надо добавить в третий. Например, Список один: attribute1, слово attribute2, слово2 ...

Сравнение списков
Доброго времени суток . Нужен небольшой совет по программе . Есть 2 списка (стандартный STL-кий класс list ) , нужно сравнить их на...

50
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
17.02.2013, 20:49  [ТС]
Студворк — интернет-сервис помощи студентам
Avazart, спасибо за способ, но в нём имеется один минус
отключаю телефон (там 2 флэшки)
смотрим лог

DDV122-PC\DDv122 | 17.02.2013 19:46:53 | USB-накопитель отключен (F //мой
DDV122-PC\DDv122 | 17.02.2013 19:46:53 | USB-накопитель отключен (G //мой
- F:\
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
17.02.2013, 20:54
Ну тут уж сами перепишите GetDrive()

Добавлено через 3 минуты
К примеру так
C++
1
2
3
4
5
6
7
8
9
String __fastcall GetDrive(DWORD Mask)
{
 String Drive;
 for(int i=0; i< sizeof(Mask)*8; i++)
    if( Mask &(1<<i) )
        Drive+= String( (char)('A'+i) )+":\\ ";
 
return Drive;
}
Ну либо пихайте в TStringList ...
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
17.02.2013, 21:07  [ТС]
Avazart, крыша поедит, спасибо
то что делал 1,5 года...
всё проблемы решились заменой моего кода на ваш, но ваш код определяет пустые картридеры как флэшки

Добавлено через 1 минуту
1,5 года убил...а тут все проблемы решились за 20 минут...
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
17.02.2013, 21:09
Ну код на скорую руку писал возможно нужно подобрать правильно device type

Добавлено через 1 минуту
Цитата Сообщение от Ddv122 Посмотреть сообщение
1,5 года убил...а тут все проблемы решились за 20 минут...
Учитесь пользоваться поиском по интернету и документацией...
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
17.02.2013, 21:15  [ТС]
Avazart, а как передать диски в drive по отдельности?
то передает F:\ G:\
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
17.02.2013, 21:16
---->
Цитата Сообщение от Avazart Посмотреть сообщение
Ну либо пихайте в TStringList ...
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
17.02.2013, 21:18  [ТС]
у меня на радостях и на нервах голова не работает....
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
17.02.2013, 21:22
C++
1
2
3
4
5
6
void __fastcall GetDrive(DWORD Mask, TStrings* DriveList)
{
 for(int i=0; i< sizeof(Mask)*8; i++)
    if( Mask &(1<<i) )
        DriveList->Add( String( (char)('A'+i) )+":\\ " );
}
Вызов к примеру :
C++
1
GetDrive(Mask, Memo1->Lines);
Код не проверял...
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
17.02.2013, 21:32  [ТС]
Avazart, ругается на
Code
1
[C++ Error] Unit1.cpp(185): E2451 Undefined symbol 'Mask'
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
17.02.2013, 21:35
Ну так по коду посмотрите что нужно подставить вместо Mask

Добавлено через 55 секунд
C++
1
GetDriveName( P->dbcv_unitmask, Memo1->Lines );
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
17.02.2013, 23:00  [ТС]
Есть один минус....всё работает и хорошо НО, я не могу скопировать на флэшку...букву мы получаем, но устройство ещё не готово
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
17.02.2013, 23:03
Ну это уже проходили - Винда шлет "ГОТОВО", значит либо в коде копирования ошибка, либо с системой не все в порядке.
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
17.02.2013, 23:06  [ТС]
Avazart,
C++
1
 ShellExecute( Handle, "open", Drive.c_str(), NULL, Drive.c_str(), SW_RESTORE );
Но потом через секунды 3, открывает диск
Миниатюры
Сравнение списков  
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
17.02.2013, 23:18  [ТС]
Avazart, BRcr предложил рабочий вариант....
с использованием
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
26
27
28
29
class timer_waits_for_explorer
               : public TTimer {
                 public:
    std::vector <AnsiString> disks;
 
    __fastcall timer_waits_for_explorer( TComponent *owner )
                   : TTimer( owner ) {
        Interval = 500;
    };
    void __fastcall set_disk_and_start( AnsiString _disk ) {
        disks.push_back( _disk );
        Enabled = true;
    };
};
void __fastcall TMain::execute_t_wait_disk( TObject *Sender ) {
    timer_waits_for_explorer *t = dynamic_cast <timer_waits_for_explorer *> ( Sender );
    for ( size_t i = 0; i < t->disks.size( ); ++i ) {
        if ( t->disks[i].IsEmpty( ) ) {
            t->disks.erase( t->disks.begin( ) + i-- );
        }
        else if ( DirectoryExists( t->disks[i] ) ) {
            handle_disk( t->disks[i] );
            t->disks.erase( t->disks.begin( ) + i-- );
        }
        if ( t->disks.empty( ) ) {
            t->Enabled = false;
        }
    }
}
Вариант рабочий...но наверно должен быть и более простой вариант для меня...
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
18.02.2013, 00:01
Цитата Сообщение от Ddv122 Посмотреть сообщение
Avazart,
C++
1
ShellExecute( Handle, "open", Drive.c_str(), NULL, Drive.c_str(), SW_RESTORE );
Может по тому что там ошибка ?
C++
1
ShellExecuteA(NULL,"open",Drive.с_str(),NULL,NULL,SW_RESTORE);
У меня все прекрасно открывается и без ошибок...

Добавлено через 8 минут
Кстати для проверки диск можно использовать DirectoryExists http://docwiki.embarcadero.com... C%2B%2B%29
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
18.02.2013, 00:02  [ТС]
Avazart, это завист что подключать, у меня появляется окно вставьте диск и через пару секунд диск открывает....
может есть стандартная функция ожидания готовности?

Добавлено через 49 секунд
Цитата Сообщение от Avazart Посмотреть сообщение
Кстати для проверки диск можно использовать DirectoryExists
а как ожидать готовности?
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
18.02.2013, 00:09
У вас в ShellExecute() ошибка ...

Добавлено через 30 секунд
Цитата Сообщение от Ddv122 Посмотреть сообщение
а как ожидать готовности?
В потоке с циклом и Sleep- ом, но это так же не нормально...
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
18.02.2013, 00:11  [ТС]
Avazart,
Я проверял не только в ShellExecute()
ну и с помощью функции copyfile
не возможно скопировать файл, но через секунды 3 копируется...
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
18.02.2013, 00:23
Цитата Сообщение от Ddv122 Посмотреть сообщение
может есть стандартная функция ожидания готовности?
Без понятия не изучал вопрос, но в http://msdn.microsoft.com/en-u... 85%29.aspx ясно написано :
DBT_DEVICEARRIVAL A device or piece of media has been inserted and is now available
Добавлено через 9 минут
Кстати может стоит напрямую вызывать через проводник
C++
1
ShellExecuteA(NULL,"open","explorer",Drive.с_str(),NULL,SW_RESTORE);
Добавлено через 43 секунды
Цитата Сообщение от Ddv122 Посмотреть сообщение
Avazart,
Я проверял не только в ShellExecute()
ну и с помощью функции copyfile
не возможно скопировать файл, но через секунды 3 копируется...
Значит что-то с системой если так тупит... но опять же при том что в коде нет ошибок....
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
18.02.2013, 00:26  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Значит что-то с системой ...
если бы это впервой, всегда так и во всём колледже
с кодом от BRcr всё работает...но наверно должна быть какая не будь системная функция...
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
26
27
28
29
class timer_waits_for_explorer
               : public TTimer {
                 public:
    std::vector <AnsiString> disks;
 
    __fastcall timer_waits_for_explorer( TComponent *owner )
                   : TTimer( owner ) {
        Interval = 500;
    };
    void __fastcall set_disk_and_start( AnsiString _disk ) {
        disks.push_back( _disk );
        Enabled = true;
    };
};
void __fastcall TMain::execute_t_wait_disk( TObject *Sender ) {
    timer_waits_for_explorer *t = dynamic_cast <timer_waits_for_explorer *> ( Sender );
    for ( size_t i = 0; i < t->disks.size( ); ++i ) {
        if ( t->disks[i].IsEmpty( ) ) {
            t->disks.erase( t->disks.begin( ) + i-- );
        }
        else if ( DirectoryExists( t->disks[i] ) ) {
            handle_disk( t->disks[i] );
            t->disks.erase( t->disks.begin( ) + i-- );
        }
        if ( t->disks.empty( ) ) {
            t->Enabled = false;
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.02.2013, 00:26
Помогаю со студенческими работами здесь

Сравнение списков
Доброго времени суток! Подскажите, пожалуйста, как написать программу, которая сравнивает по количеству элементов два списка.

Сравнение Списков
Доброго времени суток! Прошу помочь в следующем: Есть переменные А и В в которых разные списки с данными. Необходимо сравнить...

Сравнение списков
Написать функцию, которая проверяет, состоят ли два заданных списка из одних и тех же элементов (независимо от порядка их расположения) ...

Сравнение списков
Добрый день! Помогите пожалуйста. У меня есть 2 разных списка public List&lt;postgreconnect.posgreconnect.Sinxron&gt; newbd = new...

Сравнение двух списков
имеется 2 списка примерно такого типа: 1;2;3;4;0 и 1;2;3;4;1 1;2;3;4;2 и 1;2;3;4;2 1;2;3;4;3 и 1;2;3;4;3 1;2;3;4;4 и ...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru