Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.25;
Скачать: CL | DM;

Вниз

Проблема с определением 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.024 c
1-1081334625
_Павел_
2004-04-07 14:43
2004.04.25
Какой элемент можества TCustomDrawState отвечает за...


8-1074750944
DNS
2004-01-22 08:55
2004.04.25
EXE (RAD Video Tools) + Delphi???


6-1076095337
Addon
2004-02-06 22:22
2004.04.25
Помогите узнать IP чужой машины


14-1080805331
Саша
2004-04-01 11:42
2004.04.25
А где можно скачать DELPHI 5?


4-1075871946
Мыш
2004-02-04 08:19
2004.04.25
Клик сквозь окно