Форум: "Основная";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
ВнизПроблема с определением HDD (GetDriveType) Найти похожие ветки
← →
denis_group (2004-04-09 18:41) [0]Насколько я понял функция GetDriveType некоректно работает на некоторых компах, причем с разными Виндами. Если в системе несколько дисков (или даже один) то первый(С:) обычно некоректно определяется, в следствии, чего моя процедура его неотображает. Вот вся процедура:
procedure Refreshdisks;
var DriveArray:array[1..26] of PChar;
begin
Form1.ListBox2.Clear;
Form1.ListBox3.Clear;
DriveArray[1]:="A:";
DriveArray[2]:="B:";
DriveArray[3]:="C:";
DriveArray[4]:="D:";
DriveArray[5]:="E:";
DriveArray[6]:="F:";
DriveArray[7]:="G:";
DriveArray[8]:="H:";
DriveArray[9]:="I:";
DriveArray[10]:="J:";
DriveArray[11]:="K:";
DriveArray[12]:="L:";
DriveArray[13]:="M:";
DriveArray[14]:="N:";
DriveArray[15]:="O:";
DriveArray[16]:="P:";
DriveArray[17]:="Q:";
DriveArray[18]:="R:";
DriveArray[19]:="S:";
DriveArray[20]:="T:";
DriveArray[21]:="U:";
DriveArray[22]:="V:";
DriveArray[23]:="W:";
DriveArray[24]:="X:";
DriveArray[25]:="Y:";
DriveArray[26]:="Z:";
for i:=1 to 26 do
begin
if GetDriveType(PChar(DriveArray[I]))=DRIVE_FIXED then
begin
Form1.ListBox2.Items.Add(PChar(DriveArray[I]));
Form1.ListBox3.Items.Add(inttostr((DiskFree(i)div 1024)div 1024)+" MB");
end;
end;
end;
Что не так, может есть другой способ надежнее этого ?
← →
clickmaker © (2004-04-09 18:48) [1]а не красивше ли так ?
var DriveArray:array[0..25] of string;
for i:=0 to 25 do
begin
if GetDriveType(PChar(DriveArray[I]))=DRIVE_FIXED then
begin
DriveArray[I] := char(ord("A") + i) + ":";
Form1.ListBox2.Items.Add(PChar(DriveArray[I]));
Form1.ListBox3.Items.Add(inttostr((DiskFree(i)div 1024)div 1024)+" MB");
end;
end;
← →
clickmaker © (2004-04-09 18:49) [2]т.е. так
DriveArray[I] := char(ord("A") + i) + ":";
if GetDriveType(PChar(DriveArray[I]))=DRIVE_FIXED then
begin
...
ну вы меня поняли... :)
← →
denis_group (2004-04-09 18:54) [3]Так красивше спору нет и толку тоже.
← →
clickmaker © (2004-04-09 18:57) [4]А что значит "первый(С:) обычно некоректно определяется" ?
Кстати, есть еще функции GetLogicalDrives / GetLogicalDriveStrings
← →
bigsnake (2004-04-09 19:01) [5]Описание параметра GetDriveType
lpRootPathName
[in] Pointer to a null-terminated string that specifies the root directory of the disk to return information about. A trailing backslash is required.
Обрати внимание на последнее предложение
← →
denis_group (2004-04-09 19:10) [6]Значит первый логический диск <> DRIVE_FIXED.
Надеюсь \ поможет.
Теперь нужно все это обмозговать и проверить.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.142 c