C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как получить метку тома CD?
SunDevil
Отправлено: 04.05.2006, 00:02


Не зарегистрирован







Вот интересует такой вопрос. На форме все предельно просто: Button и Edit. Надо, чтобы по нажатию на кнопку в Edit1 появилась метка тома CD, который находится в CD-ROM. Как это реализовать? СПАСИБО БОЛЬШОЕ!
Guest
Отправлено: 04.05.2006, 08:07


Не зарегистрирован







GetVolumeInformation
SunDevil
Отправлено: 04.05.2006, 11:20


Не зарегистрирован







А можно поподробнее, а то что-то я не очень хорошо понимаю smile.gif
Guest
Отправлено: 04.05.2006, 11:52


Не зарегистрирован







Если сами не справитесь, то позже. Пока занят smile.gif
Gal
Отправлено: 04.05.2006, 12:12


Станционный диспетчер

Группа: Участник
Сообщений: 124



CODE

 LPCTSTR          NameDiskPtr;
 DWORD            VolSN, MaxCompLen, FSFlag;
 char             VolName[256], FSName[100];

 if (GetVolumeInformation(NameDiskPtr,VolName,255,&VolSN,&MaxCompLen,&FSFlag,FSName,100))
  {
   // Диск — NameDiskPtr
   // Имя тома — VolName
   // Серийный номер — VolSN
   // Файловая система — FSName
  }
 else
  {
   // Диск —  НЕ ГОТОВ!;
  }
}

SunDevil
Отправлено: 04.05.2006, 20:09


Не зарегистрирован







CODE
void __fastcall TForm1::Button3Click(TObject *Sender)
{
//LPCTSTR          NameDiskPtr;
//DWORD            VolSN, MaxCompLen, FSFlag;
char             VolName[256], FSName[100];

if (GetVolumeInformation(NameDiskPtr,VolName,255,&VolSN,&MaxCompLen,&FSFlag,FSName,100))
 {
  //NameDiskPtr;
  Edit4->Text=VolName;
  // VolSN
  // FSName
 }
}

Пишу так, а он выдает ошибку:
Access violation at adress 7C9012B4 in module 'ntdll.dll'.
AVC
Отправлено: 05.05.2006, 08:15


Ветеран

Группа: Модератор
Сообщений: 1583



Для начала это:
if (GetVolumeInformation(NameDiskPtr, VolName, 255, &VolSN, &MaxCompLen, &FSFlag, FSName, 100))
Gal
Отправлено: 05.05.2006, 09:46


Станционный диспетчер

Группа: Участник
Сообщений: 124



Ты имя диска задаешь?
Например так
NameDiskPtr = "D:\\";
SunDevil
Отправлено: 05.05.2006, 19:12


Не зарегистрирован







Товарищи, напишите нормальный код для кнопки, чтобы по нажатию на нее имя тома копировалось в Edit. СПАСИБО!
Gal
Отправлено: 06.05.2006, 15:26


Станционный диспетчер

Группа: Участник
Сообщений: 124



[QUOTE]
void __fastcall TForm1::Button3Click(TObject *Sender)
{
LPCTSTR NameDiskPtr = Edit1->Text.c_str();
DWORD VolSN, MaxCompLen, FSFlag;
char VolName[256], FSName[100];

if (GetVolumeInformation(NameDiskPtr,VolName,255,&VolSN,&MaxCompLen,&FSFlag,FSName,100))
{
if (Edit1->Text != "")
Edit2->Text = AnsiString(VolName);
else
Edit2->Text = "Не задан диск";
}
else
{
Edit2->Text = "НЕ ГОТОВ!";
}
}
[/CODE]
Что — то в этом роде(переделаешь как тебе необходимо)

Вернуться в Вопросы программирования в C++Builder