Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

узнать букву USB-диска


batya-x ©   (2008-07-15 22:35:00) 

как узнать букву съёмного диска, после того как её вставили в usb порт


stas   (2008-07-17 15:16:00) [1]

Правильный$Вася   (17.07.08 14:38) [12]
так опубликуйте альтернативный.


Правильный$Вася   (2008-07-17 14:38:00) [2]


> Значит у тебя работать данный код небудет.

в топку такие коды


stas   (2008-07-17 13:10:00) [3]

Правильный$Вася   (16.07.08 15:47) [9]
Значит у тебя работать данный код небудет.


Игорь Шевченко   (2008-07-16 16:03:00) [4]


> Флешка это TDriveType = dtFloppy, но  буква не 'A' и не
> 'B'


Я тебя разочарую - даже флоппи может быть не 'A' и не 'B'


Правильный$Вася   (2008-07-16 15:47:00) [5]


> Флешка это TDriveType = dtFloppy

гибкая флэшка - это здорово
а почему флэшка неможет быть A, если у меня флопа совсем нет? хочу - назначу


stas   (2008-07-16 15:11:00) [6]

Тут пример как получить список дисков.
Флешка это TDriveType = dtFloppy, но  буква не 'A' и не 'B'


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   ListBox1: TListBox;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

type TDriveType = (dtUnknown, dtNoDrive, dtFloppy, dtFixed, dtNetwork, dtCDROM,
   dtRAM);

Procedure GetDriveLst (List:TStrings);
var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
GetDriveLst (ListBox1.Items);
end;

Procedure GetDriveLst (List:TStrings);
var
 DriveNum: Integer;
 DriveChar: Char;
 DriveType: TDriveType;
 DriveBits: set of 0..25;

 procedure AddDrive(const Name:string);
 begin
  List.Add(Name);
 end;

begin
 { fill list }
 //Clear;
 Integer(DriveBits) := GetLogicalDrives;
 for DriveNum := 0 to 25 do
 begin
   if not (DriveNum in DriveBits) then Continue;
   DriveChar := Char(DriveNum + Ord('a'));
   DriveType := TDriveType(GetDriveType(PChar(DriveChar + ':\')));
 //  Memo1.Lines.Add(DriveChar)
{    if TextCase = tcUpperCase then   }
     DriveChar := Upcase(DriveChar);

   case DriveType of
     dtFloppy:   AddDrive (DriveChar+':\0');
     dtFixed:    AddDrive(DriveChar+':\1');
     dtNetwork:  AddDrive(DriveChar+':\2');
     dtCDROM:    AddDrive(DriveChar+':\3');
     dtRAM:      AddDrive(DriveChar+':\4');
   end;
 end;
end;
end.


Denis__   (2008-07-16 14:35:00) [7]

Гугли. Я в своё время нагуглил.


KilkennyCat   (2008-07-16 00:55:00) [8]

по-подробнее не помню. помню, что это NT-имена устройств, вроде.
посмотрите это... там куча всего...
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB

или информацию по QuereDosDevice();


  (2008-07-16 00:45:00) [9]

Удалено модератором


batya-x   (2008-07-16 00:15:00) [10]

что за глобал в реестре, по подробнее можно


KilkennyCat   (2008-07-15 23:48:00) [11]

в реестре, наверное, глобал, символьные имена... тогда можно отследить и вышеназванные особенности.


Игорь Шевченко   (2008-07-15 22:50:00) [12]

если на съемном диске несколько разделов то и буков может быть несколько.


Правильный$Вася   (2008-07-15 22:37:00) [13]

а если их несколько?
а иногда буква автоматом не назначается (вернее, попадает на занятую другим подключением, напрмер, замапленный сетевой диск)

ps а буквы вставляют?


Наверх

Титульная страница Поиск, карта сайта Написать письмо