Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Диск 3.14


Автор: Mde 15.12.2004, 00:16
Подскажите пожалуйста как в системе определить под какой буквой числится дискета(3.14). Букв то много в может быть на любой от A до Z чаще всего на А. Но все же для уверенности подскажите кто чем может.

Автор: Alex 15.12.2004, 00:27
Код

type
 tDriveType = (dFloppy, dHdd, dCDROM, dNetwork);

const
 DriveType: array [tDriveType] of Cardinal = (
        {dFloppy } 2,
        {dHdd    } 3,
        {dCDROM  } 5,
        {dNetwork} 4
            );

function GetAllDrives(dType: tDriveType): String;
// Получение списка дисков, имеющихся в системе
// dType - Тип диска
var
 Drive: char; // Буква диска
const
 pref = ':\';
begin
 Result:='None';
 with TStringList.Create do try
   for Drive:= 'A' to 'Z' do
     if GetDriveType(PChar(Drive + pref)) = DriveType[dType] then
       Add(Drive + pref);
   SetString(Result, PChar(CommaText), length(CommaText));
 finally
   Free;
 end;
end;
// -----------------------------------------------------------------
function GetAllFloppyDrives: string;
// Получение списка гибких дисков, имеющихся в системе
begin
 Result:= GetAllDrives(dFloppy);
end;
// -----------------------------------------------------------------
function GetAllHddDrives: string;
// Получение списка жестких дисков, имеющихся в системе
begin
 Result:= GetAllDrives(dHdd);
end;
// -----------------------------------------------------------------
function GetAllCDDrives: String;
// Получение списка CD дисков, имеющихся в системе
begin
 Result:= GetAllDrives(dCDROM);
end;
// -----------------------------------------------------------------
function GetAllNetworkDrives: string;
// Получение списка сетевых дисков, имеющихся в системе
begin
 Result:= GetAllDrives(dNetwork);
end;
// -----------------------------------------------------------------

Автор: Mde 16.12.2004, 02:51
Дурацкий вопрос и че с эти делать? По подробней если можно

Автор: Snowy 16.12.2004, 14:07
Код

uses Windows
var
 D: char;
begin
 for D:= 'A' to 'Z' do
     if GetDriveType(PChar(Drive + ':\')) = DRIVE_REMOVABLE then // D - это он!

Одна проблема: Определяет первый Removable. А им может оказаться в 0.05% случаев и ZIP и флэш и т.п. Но другого способа в дельфях нет. Может где-то что-то нестандартное есть, но науке это неизвестно.

Автор: ~FoX~ 16.12.2004, 14:10
Может я чего не понимаю, но раскажите мне как можно диску 3,5 заделать любую букву кроме А ил В???

Автор: Snowy 16.12.2004, 15:54
Ну, как вариант, можно вытащить флоп, поставить XP, подключить пару сетевых дисков на А и В, а потом воткнуть флоп обратно. Сам не проверял, но XP, в отличие от 9x, не любят менять буковки диска.
Можно попробовать в реестре поменять дескриптор А и В (также в ХР).
А вообще их может вообще не быть в системе (у меня например вообще флопа нет).

Автор: ~FoX~ 17.12.2004, 17:55
А можноли через BIOS дернуть?

Автор: Snowy 20.12.2004, 13:56
Нет, через BIOS только A и B (сидели на трубe).
А если флоп внешний, то тут уж фантазия неограничена...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)