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

Каким компонентом можно реализовать такое?

01.07.2012, 02:31. Показов 7915. Ответов 89
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Каким компонентом можно реализовать такое?
Миниатюры
Каким компонентом можно реализовать такое?  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.07.2012, 02:31
Ответы с готовыми решениями:

Каким компонентом продемонстрировать выбранный цвет
Уважаемые здравствуйте! Вопрос детский конечно, но всё же хотябы помогите где рыть и какой это может быть компонент в билдере ... ...

Каким компонентом воспользоваться, чтобы отправить E-mail, если у меня инет через прокси?
Пробовал NMSMTP, IdSMTP, но там нет настроек прокси.

Игра "Дурак", каким компонентом воспользоваться и как.
Пытаюсь я написать карточную игру дурак, чтобы можно было играть по локальной сети или через Хамачи. Играть можно будет двум и более людям....

89
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
09.03.2013, 23:29  [ТС]
Студворк — интернет-сервис помощи студентам
BRcr, так не вышло,
что я не так делаю?
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
11.03.2013, 10:40
На досуге запущу код, посмотрю........
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
11.03.2013, 11:46  [ТС]
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
  void __fastcall TMain::WMDeviceChange( TMessage &Message ) {
  timer_waits_for_explorer *t_wait_disk = NULL; // это желательно в классе формы, а в ее деструкторе освобождение
    if ( Message.Msg == WM_DEVICECHANGE && Message.WParam == 0x8000 )
    {
        char DiskLabel[MAX_PATH];             //метка диска
        AnsiString disk;                    //переменная disk типа  AnsiString
        spi->Clear();
        WORD OldErrorMode;                   //отключаем показ ошибок
        DWORD dr = GetLogicalDrives( );    // функция возвращает битовую маску
        for ( int x = 1; x < 26; x++ ) {  // проходимся циклом по битам
            if ( ( dr >> x ) & 1 ) {     // узнаём значение текущего бита, если единица - диск с номером x есть
                disk = AnsiString( ( char )( 65 + x ) ) + ":\\"; // получаем литеру диска
                OldErrorMode = SetErrorMode( SEM_FAILCRITICALERRORS ); // убираем показ ошибок
                UINT DriveType = GetDriveType( disk.c_str( ) );  // получаем тип диска
                 if ((DriveType != DRIVE_CDROM &                // исключаем CDROMы
                        DriveType != DRIVE_FIXED &             // исключаем  HDD
                        DriveType != DRIVE_RAMDISK &          // исключаем  Ram disk
                        DriveType != DRIVE_REMOTE &          //исключаем FDD
                        DriveType != DRIVE_NO_ROOT_DIR &    //исключаем повреждённые диски
                        DriveType != DRIVE_UNKNOWN))       //исключаем неизвестные диски
                {
                        bool ready = DirectoryExists(disk); // пытаемcя открыть корневую директорию
                        if (ready)
                        {
                            handle_disk( disk );
                            Application->ProcessMessages();
                        }
                        else
                        {
                            if ( ! t_wait_disk ) {
                                t_wait_disk = new timer_waits_for_explorer( this );
                                t_wait_disk->OnTimer = &execute_t_wait_disk;
                            }
                            t_wait_disk->set_disk_and_start( disk );
                        }
                }
        }
 
    }}
 
    if( Message.Msg == WM_DEVICECHANGE && Message.WParam == 0x8004 )  //ловим отключение
    {
    Button1Click(0) ;          //обновляем drevo
      dt = Now( );       // полный формат даты
   { for (int i = 0; i < spi->Count; i++)
        if (spisok2->IndexOf(spi->Strings[i]) < 0)
             Log->Lines->Add(Label24->Caption + "\\"+ Label21->Caption + " |  " +  DateTimeToStr(dt) + "  | " + " USB-накопитель отключен   " + "("+ spi->Strings[i].SubString(1,2) + ")");  //в отчёт отключение
             Main->Caption=( "Flash Cleaner - "+ TimeToStr(dt) + "  | " + " USB-накопитель отключен  ");     //указываем в Лог время,дату, имя диска.
             spi->Clear();
             spi->AddStrings(spisok2);
             spisok2->Clear();
 
    }
     }
      Button1Click(0) ;          //обновляем drevo
}
так же Avazart привел интересный код (Ловит только подключенные а не все)

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
30
31
32
33
34
35
36
37
38
39
#include <Dbt.h>
//---------------------------------------------------------------------------
String __fastcall GetDriveName(DWORD Mask)
{
 for(int i=0; i< sizeof(Mask)*8; i++)
    if( Mask &(1<<i) )
        return String( (char)('A'+i))+":\\";
 
return 0;
}
//-----------------------------------------------------------------------------
void __fastcall TForm1::WMDeviceChange( TMessage &Message )
{
if(Message.Msg == WM_DEVICECHANGE)
    {
     switch(Message.WParam)
         {
             case DBT_DEVICEARRIVAL:
             case DBT_DEVICEREMOVECOMPLETE:
                 {
                        DWORD device_type=((PDEV_BROADCAST_VOLUME)Message.LParam)->dbcv_devicetype;
 
                        if(device_type == DBT_DEVTYP_VOLUME)
                            {
                                PDEV_BROADCAST_VOLUME P = (PDEV_BROADCAST_VOLUME)Message.LParam;
                                String Drive = GetDriveName( P->dbcv_unitmask );
 
                                if(Message.WParam == DBT_DEVICEARRIVAL)
                                         Memo1->Lines->Add("+ "+Drive);
                                if(Message.WParam == DBT_DEVICEREMOVECOMPLETE)
                                         Memo1->Lines->Add("- "+Drive);
                            }
                     break;
                 } // end  case
                default: break;
            }// end switch
     } // end if
}
//---------------------------------------------------------------------------
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
15.04.2013, 21:34
Как просил, вот вариант с потоком. Все работает, только сбойных флешек у меня нет, так что этот аспект проверить не имею возможности.
Еще заметил один нюанс - событие DBT_DEVICEARRIVAL и иже с ним не транслируются при подключении sd-карточки через кардридер. Возможно, стоит использовать прежний способ перехвата событий железа.
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
class t_direxists_thread;
 
class TForm1
               : public TForm
{
__published:
    TMemo * memo1;
private:
public:
    t_direxists_thread * thr;
    __fastcall TForm1( TComponent * Owner );
    __fastcall ~TForm1( );
    void __fastcall WMDeviceChange( TMessage & Message );
    void __fastcall handle_disk( String d )
    {
        memo1->Lines->Add( "disk " + d + " handled." );
    }
#pragma option push -vi-
    BEGIN_MESSAGE_MAP;
    MESSAGE_HANDLER( WM_DEVICECHANGE, TMessage, WMDeviceChange );
    END_MESSAGE_MAP( TForm );
#pragma option pop
};
// ---------------------------------------------------------------------------
extern PACKAGE TForm1 * Form1;
// ---------------------------------------------------------------------------
class t_direxists_thread
               : public TThread
{
public:
    std::vector < String > disks;
    typedef void __fastcall( __closure * handle_disk_fptr )( String );
    handle_disk_fptr handle_disk;
    String ready_one;
 
    __fastcall t_direxists_thread( handle_disk_fptr hdp, bool susp = false )
                   : TThread( susp ), handle_disk( hdp )
    {
    }
    void __fastcall Execute( )
    {
        while ( !Terminated )
        {
            for ( size_t i = 0; i < disks.size( ); ++i )
            {
                if ( disks[i].IsEmpty( ) )
                {
                    disks.erase( disks.begin( ) + i-- );
                }
                else if ( DirectoryExists( ready_one = disks[i] ) )
                {
                    Synchronize( & handle_now );
                    disks.erase( disks.begin( ) + i-- );
                }
                if ( disks.empty( ) )
                {
                    Suspend( );
                }
            }
            Sleep( 500 );
        }
    }
    void __fastcall handle_now( )
    {
        handle_disk( ready_one );
    }
};
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
__fastcall TForm1::TForm1( TComponent * Owner ) : TForm( Owner )
{
    thr = new t_direxists_thread( &handle_disk );
}
 
// ---------------------------------------------------------------------------
__fastcall TForm1::~TForm1( )
{
  delete thr;
}
// ---------------------------------------------------------------------------
String __fastcall GetDriveName( DWORD Mask )
{
    String Drive;
    for ( int i = 0; i < sizeof( Mask ) * 8; i++ )
    {
        if ( Mask & ( 1 << i ) )
        {
            Drive += String( ( char )( 'A' + i ) ) + ":\\ ";
        }
    }
    return Drive;
}
// ---------------------------------------------------------------------------
void __fastcall TForm1::WMDeviceChange( TMessage & Message )
{
    if ( Message.Msg == WM_DEVICECHANGE )
    {
        switch ( Message.WParam )
        {
        case DBT_DEVICEARRIVAL:
        case DBT_DEVICEREMOVECOMPLETE:
            {
                DWORD device_type = ( ( PDEV_BROADCAST_VOLUME )Message.LParam )->dbcv_devicetype;
 
                if ( device_type == DBT_DEVTYP_VOLUME )
                {
                    PDEV_BROADCAST_VOLUME P = ( PDEV_BROADCAST_VOLUME )Message.LParam;
                    String Drive = GetDriveName( P->dbcv_unitmask );
 
                    if ( Message.WParam == DBT_DEVICEARRIVAL )
                    {
                        memo1->Lines->Add( "+ " + Drive );
                        thr->Suspend( );
                        thr->disks.push_back( Drive );
                        thr->Resume( );
                    }
                    if ( Message.WParam == DBT_DEVICEREMOVECOMPLETE )
                    {
                        memo1->Lines->Add( "- " + Drive );
                    }
                }
                break;
            }
        }
    }
}
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
19.04.2013, 15:21  [ТС]
BRcr, Да, всё же проще старый использовать вариант с
C++
1
(if  ( DriveType == DRIVE_REMOVABLE) )
Но, появилась другая проблема, - нашел я сбойную флэшку с поврежденной файловой системой...и как не странно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
   
 void __fastcall handle_disk(AnsiString disk) {
        char DiskLabel[MAX_PATH];             //ìåòêà äèñêà
        TDateTime dt;
        Edit1->Text=disk;           //ðåçóëüòàò â Edit1
        GetVolumeInformation( disk.c_str( ), DiskLabel, MAX_PATH, NULL, NULL, NULL, NULL, 0 );    //ïîëó÷àåì Èìÿ äèñêà
        // äëÿ îò÷åòà
        Log->Lines->BeginUpdate();
        dt = Now( ); // ïîëíûé ôîðìàò äàòû
        Log->Lines->Add(Label24->Caption + "\\"+ Label21->Caption + " |  " +  DateTimeToStr(dt) +
                        "  | " + "Ïîäêëþ÷åí íàêîïèòåëü: " "(" + ( disk.SubString(1,2) ) +
                        ")" + " " + DiskLabel + "" );     //óêàçûâàåì â Ëîã âðåìÿ,äàòó, èìÿ äèñêà.
        Caption=( "Flash Cleaner - "+ TimeToStr(dt) +
                  "  | " + "Ïîäêëþ÷åí íàêîïèòåëü: " "(" + ( disk.SubString(1,2) ) +
                  ")" + " " + DiskLabel + "" );     //óêàçûâàåì â Ëîã âðåìÿ,äàòó, èìÿ äèñêà.
        Log->Lines->EndUpdate();
        if ( Settings->CheckBox5->Checked ) {   //åñëè ñòîèò ãàëî÷êà íà  CheckBox
            Button4->Click( );                  //âûïîëíÿåòñÿ Button
}
        Button1Click(0); //Обновляем дерево
        }
Но в дерево поврежденная не попала - там код проверки -

C++
1
2
3
4
5
6
            UINT DriveType = GetDriveType( disk.c_str( ) );  // ïîëó÷àåì òèï äèñêà
            if  ( DriveType == DRIVE_REMOVABLE)        //èñêëþ÷àåì Flash Drive
            {
                if (DirectoryExists(disk))
                {
                    spisok2->Add(disk);
Миниатюры
Каким компонентом можно реализовать такое?  
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
19.04.2013, 15:46
Во-первых, непонятно где это "там" код проверки. Во-вторых, непонятно, какое из условий не сработало - по типу диска или DirectoryExists(). Правильно ли до этого кода доходит имя тома, то бишь, что находится в переменной disk? Открывается ли флешка проводником?
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
19.04.2013, 23:29  [ТС]
BRcr,
Цитата Сообщение от BRcr Посмотреть сообщение
по типу диска или DirectoryExists().
Тип диска определился как флэшка.
Цитата Сообщение от BRcr Посмотреть сообщение
Открывается ли флешка проводником?
Проводник просит отформатировать....
Правильно ли до этого кода доходит имя тома
Вроде как нет...в проводнике стандарт - "Съемный диск"

Из-за этого ошибка...(пытается скопировать файл на диск...
C++
1
2
        if ( Settings->CheckBox5->Checked ) {   //если стоит галочка на  CheckBox
            Button4->Click( );                  //выполняется Button
Проверка
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
30
31
void __fastcall TMain::WMDeviceChange( TMessage &Message ) {
    timer_waits_for_explorer *t_wait_disk = NULL; // это желательно в классе формы, так я и не нашел куда)
    if ( Message.Msg == WM_DEVICECHANGE && Message.WParam == 0x8000 )
    {
        AnsiString disk;                    //переменная disk типа  AnsiString
        DWORD dr = GetLogicalDrives( );    // функция возвращает битовую маску
        for ( int x = 1; x < 26; x++ ) {  // проходимся циклом по битам
            if ( ( dr >> x ) & 1 ) {     // узнаём значение текущего бита, если единица - диск с номером x есть
                disk = AnsiString( ( char )( 65 + x ) ) + ":\\"; // получаем литеру диска
                SetErrorMode( SEM_FAILCRITICALERRORS ); // убираем показ ошибок
                UINT DriveType = GetDriveType( disk.c_str( ) );  // получаем тип диска
                if ((DriveType != DRIVE_CDROM &                   // исключаем CDROMы
                        DriveType != DRIVE_FIXED &                 // исключаем  HDD
                        DriveType != DRIVE_RAMDISK &            // исключаем  Ram disk
                        DriveType != DRIVE_REMOTE &            //исключаем FDD
                        DriveType != DRIVE_NO_ROOT_DIR &    //исключаем повреждённые диски
                        DriveType != DRIVE_UNKNOWN))       //исключаем неизвестные диски
                {
                    bool ready = DirectoryExists(disk); // пытаемся открыть корневую директорию
                    if (ready)                          //если всё ок - то
                    {
                        handle_disk( disk ); //выполняем условия
                    }
                    else //иначе
                    {
                        if ( ! t_wait_disk ) { //ждем диск
                            t_wait_disk = new timer_waits_for_explorer( this );
                            t_wait_disk->OnTimer = &execute_t_wait_disk;
                        }
                        t_wait_disk->set_disk_and_start( disk );
                    }

При повторном вызове WMDeviceChange ошибки нет

Добавлено через 15 секунд
BRcr,
Цитата Сообщение от BRcr Посмотреть сообщение
по типу диска или DirectoryExists().
Тип диска определился как флэшка.
Цитата Сообщение от BRcr Посмотреть сообщение
Открывается ли флешка проводником?
Проводник просит отформатировать....
Правильно ли до этого кода доходит имя тома
Вроде как нет...в проводнике стандарт - "Съемный диск"

Из-за этого ошибка...(пытается скопировать файл на диск...
C++
1
2
        if ( Settings->CheckBox5->Checked ) {   //если стоит галочка на  CheckBox
            Button4->Click( );                  //выполняется Button
Проверка
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
30
31
void __fastcall TMain::WMDeviceChange( TMessage &Message ) {
    timer_waits_for_explorer *t_wait_disk = NULL; // это желательно в классе формы, так я и не нашел куда)
    if ( Message.Msg == WM_DEVICECHANGE && Message.WParam == 0x8000 )
    {
        AnsiString disk;                    //переменная disk типа  AnsiString
        DWORD dr = GetLogicalDrives( );    // функция возвращает битовую маску
        for ( int x = 1; x < 26; x++ ) {  // проходимся циклом по битам
            if ( ( dr >> x ) & 1 ) {     // узнаём значение текущего бита, если единица - диск с номером x есть
                disk = AnsiString( ( char )( 65 + x ) ) + ":\\"; // получаем литеру диска
                SetErrorMode( SEM_FAILCRITICALERRORS ); // убираем показ ошибок
                UINT DriveType = GetDriveType( disk.c_str( ) );  // получаем тип диска
                if ((DriveType != DRIVE_CDROM &                   // исключаем CDROMы
                        DriveType != DRIVE_FIXED &                 // исключаем  HDD
                        DriveType != DRIVE_RAMDISK &            // исключаем  Ram disk
                        DriveType != DRIVE_REMOTE &            //исключаем FDD
                        DriveType != DRIVE_NO_ROOT_DIR &    //исключаем повреждённые диски
                        DriveType != DRIVE_UNKNOWN))       //исключаем неизвестные диски
                {
                    bool ready = DirectoryExists(disk); // пытаемся открыть корневую директорию
                    if (ready)                          //если всё ок - то
                    {
                        handle_disk( disk ); //выполняем условия
                    }
                    else //иначе
                    {
                        if ( ! t_wait_disk ) { //ждем диск
                            t_wait_disk = new timer_waits_for_explorer( this );
                            t_wait_disk->OnTimer = &execute_t_wait_disk;
                        }
                        t_wait_disk->set_disk_and_start( disk );
                    }

При повторном вызове WMDeviceChange ошибки нет
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
20.04.2013, 07:45
Я в затруднении. Если тип диска определился как флешка, значит, не сработало условие по DirectoryExists(). Если оно не сработало, то почему программка пытается записать чего-то на неготовую флешку?

Зачем просил реализацию потока, а продолжаешь использовать таймер? Да еще и неправильно... указатель t_wait_disk нельзя вот так объявлять локально, внутри определения метода WMDeviceChange. Либо в объявлении класса формы, либо в глобальном пространстве имен, либо как static.
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
20.04.2013, 13:21  [ТС]
Цитата Сообщение от BRcr Посмотреть сообщение
Зачем просил реализацию потока, а продолжаешь использовать таймер? Да еще и неправильно... указатель t_wait_disk нельзя вот так объявлять локально, внутри определения метода WMDeviceChange. Либо в объявлении класса формы, либо в глобальном пространстве имен, либо как static.
Вы сказали что DBT_DEVICEARRIVAL не видит с адаптерера ноутбука флэшки, вот я и решил старый код перенести в поток, по примеру выложенного вами , и как-раз принесли флэшку убитую, на восстановление, вот и словил ошибку, и решил сообщить...
т.к заметил код обновления дерева срабатывает через секунду и там этой флэшки не видно.
+ при повторном вызове WMDeviceChange уже флэшку не видет.
Флэшка у меня это сейчас есть, но к сожалению я её восстановил, попытаюсь убить программным путем и получить туже ошибку
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
20.04.2013, 16:45
Цитата Сообщение от Ddv122 Посмотреть сообщение
вот я и решил старый код перенести в поток, по примеру выложенного вами
Как это хоть выглядит-то в итоге?
Да и одно остается все равно - почему идет попытка записи чего-то на диск, если не срабатывает условие по DirectoryExists()? Или-таки оно срабатывает?

И как, кстати, можно флешку сделать глючной? Просто любопытно.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
20.04.2013, 16:50
Цитата Сообщение от BRcr Посмотреть сообщение
можно флешку сделать глючной
несколько раз резко выдернуть из гнезда, без отключения "по протоколу"
1
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
20.04.2013, 17:02
Во время записи выдернуть, точно. Или форматирования.
Ни разу не пробовал, надо у кого-нить одолжить флешку...
0
20.04.2013, 17:14

Не по теме:

Цитата Сообщение от BRcr Посмотреть сообщение
надо у кого-нить одолжить флешку
- находчивый вы наш :D

0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
20.04.2013, 23:17  [ТС]
Цитата Сообщение от BRcr Посмотреть сообщение
И как, кстати, можно флешку сделать глючной? Просто любопытно.
Произвести низкоуровневое форматирование, этим мы возможно увеличим скорость записи + возможно подправим бэды, Но не будет возможности записи пока не будет произведено высокоуровневое форматирование (через стандартный проводник хотя бы)
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
20.04.2013, 23:32
глючная, это - как мигалка на милицейской машине - то работает, то не работает , а не
Цитата Сообщение от Ddv122 Посмотреть сообщение
возможности записи пока
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
20.04.2013, 23:41  [ТС]
LK, ну и + стандартными средствами не возможно было произвести форматирование
Я писал про то - как можно получить ошибку, не повредив флэшку
Вот что готово на данный момент
Миниатюры
Каким компонентом можно реализовать такое?  
1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
20.04.2013, 23:43
хорошая работа
1
21.04.2013, 02:13
 Комментарий модератора 
Не имеющее к обсуждаемому вопросу сообщение перемещено в новую тему: Что такое Settings

Okonenko Stanis, одна тема - один вопрос.
Правила
п.4.4. На каждый вопрос создавайте по одной теме - это помогает избежать путаницы в ответах и облегчает поиск.
Не следует захламлять тему другого пользователя своими, не относящимися непосредственно к обсуждаемой проблеме, вопросами.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
21.04.2013, 10:48
Полезная, наверно, программка в вузе, но в меня по-прежнему вселяет ужас удаление файлов по расширению. Свои флешки я бы от такого берег, как от огня.
Страшно подумать, что она может натворить с кучей live-ОС, установочных пакетов ОС и туевой хучей портабельных программ и неархивированных пакетов драйверов...

А откат есть в программе?
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
21.04.2013, 11:46  [ТС]
Страшно подумать, что она может натворить с кучей live-ОС, установочных пакетов ОС и туевой хучей портабельных программ и неархивированных пакетов драйверов...
Кликните здесь для просмотра всего текста
Ну программа удаляет только с корня флэшек и только файл autorun.inf, но и все файлы с расширением *lnk
Просто месяцев 8 не занимался программой, а тут с понедельника начал и многое изменил и пофиксил
Список изменений за неделю:
1)Уменьшен размер программы - на 300 кб
1.1)На 30% меньше кода
2)Убрано 8 лишних TstringList и 20 переменных
3)Всё заключено в try/catch
4)Исключены лишние вызовы функций
5)Правильный подсчёт флэшек, + если нет флэшек в системе удаляется пункт с "дерева"- "Съёмные диски
6)При подключении появляется ярлык на рабочем столе, обходящий autorun.inf. при отключении удаляется
7)Повышенный файл манифеста от Windows 7 (обход UAC)
8)Подправлено отображение программы в Windows XP (с классическим интерфейсом)
9)Добавлено безопасное извлечение + информация о ПК...
10)При удалении файлов/файлов с папки/ - файл ищется в процессах и снимается от туда, устанавливаются атрибуты на нормальные и удаляется файл
11)Ремонт последствий от вирусов/ восстановление файла Host и т.д
12)Убраны все варинги

А откат есть в программе?
Я думаю будет, но ещё не добрался до реализации...Благо ещё 2 месяца есть на всё про всё
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.04.2013, 11:46
Помогаю со студенческими работами здесь

У кого-то есть идея каким образом можно такое реализовать?
Доброго дня уважаемое сообщество. Подскажите пожалуйста, как можно сделать сайт с одной страницей, но на которой есть меню, по клику на...

Каким компонентом можно показать время?
Каким компонентом в C# можно показать време например (08:00 до 14:00)

Каким компонентом можно сделать вот такую сетку
Каким компонентом можно сделать вот такую сетку в delphi.

Каким компонентом joomla 1.5 можно создать такую таблицу?
Пожалуйста помогите!!

Можно ли такое реализовать?
А можно ли сделать такое же ток с числами которые введёт пользователь? С числом разрешается производить только два действия: умножать на...


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

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru