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

Вниз

Локальный логический диск vs сетевой диск   Найти похожие ветки 

 
Германн ©   (2007-11-29 02:04) [0]

Как их различить? Т.е. насколько легко или наоборот трудно отличить одно от другого?


 
DrPass ©   (2007-11-29 02:04) [1]

GetDriveType это сообщает


 
Германн ©   (2007-11-29 02:10) [2]


> DrPass ©   (29.11.07 02:04) [1]
>
> GetDriveType это сообщает
>

Если не затруднит, сообщи что именно она возвращает в обоих случаях.
Поясню. Я не имею задачи научиться их различать. Но мне нужно обоснование того, что если кто-то захочет их различить, то ему ничто не помешает, кроме его собственного неумения.


 
korneley ©   (2007-11-29 02:22) [3]


> GetDriveType...
"DRIVE_REMOTE The drive is a remote (network) drive."
Логический - вроде не remote... ;)


 
KilkennyCat ©   (2007-11-29 02:24) [4]

Это легко. Достаточно выдернуть патч-корд. если диск исчез -  был сетевой. Если исчезли все диски, значит, выдернут провод питания.


 
KilkennyCat ©   (2007-11-29 02:26) [5]


> korneley ©

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


 
Riply ©   (2007-11-29 02:29) [6]

> [0] Германн ©   (29.11.07 02:04)
> Локальный логический диск vs сетевой диск
> Как их различить? Т.е. насколько легко или наоборот трудно отличить одно от другого?

Спасибо :)


 
Германн ©   (2007-11-29 02:30) [7]


> KilkennyCat ©   (29.11.07 02:24) [4]
>
> Это легко. Достаточно выдернуть патч-корд. если диск исчез
> -  был сетевой. Если исчезли все диски, значит, выдернут
> провод питания.
>

Эээ. Тут несколько о другой ситуации. Сети нет вообще.
Я могу какой-то каталог (папку) на своем локальном физическом диске объявить как сетевой диск.


 
Германн ©   (2007-11-29 02:32) [8]


> Riply ©   (29.11.07 02:29) [6]

Не за что.
А за что спасибо?
Неужели я ненароком влез туда, куда ...
:)))


 
korneley ©   (2007-11-29 02:34) [9]


> Я могу какой-то каталог (папку) на своем локальном физическом
> диске объявить как сетевой диск.
И...что? Если драйвера честные, то сетевой = сетевой (с точки зрения софта)


 
Riply ©   (2007-11-29 02:37) [10]

> [8] Германн ©   (29.11.07 02:32)
> Не за что.
> А за что спасибо?

У меня совершенно вылетело из головы, что диски могут быть еще и "сетевыми".
Соответственно, я это (у себя в программе) никак не учитывала.
Так что ты помог исправить будущие баги :)


 
Германн ©   (2007-11-29 02:50) [11]


> korneley ©   (29.11.07 02:34) [9]
>
>
> > Я могу какой-то каталог (папку) на своем локальном физическом
> > диске объявить как сетевой диск.
> И...что? Если драйвера честные, то сетевой = сетевой (с
> точки зрения софта)
>

Хм. Поздно уже. Мысли разбегаются. Да и других забот - полон рот.
Оставим пока. Если осмыслю, переспрошу.


 
Германн ©   (2007-11-29 02:59) [12]


> Riply ©   (29.11.07 02:37) [10]

Ну вот тебе - всегда пожалуйста! Только не связывайся с системами жизнеобеспечения. И если уйдёшь в стюардессы, предупреди нас.
:-)


 
Riply ©   (2007-11-29 04:41) [13]

> [12] Германн ©   (29.11.07 02:59)
> Ну вот тебе - всегда пожалуйста! Только не связывайся с системами жизнеобеспечения.
> И если уйдёшь в стюардессы, предупреди нас. :-)

Да куда ж я от вас-то. Приручили... :)


 
Anatoly Podgoretsky ©   (2007-11-29 09:27) [14]

> korneley  (29.11.2007 02:34:09)  [9]

Ты затронул жизненый вопрос, а много их правильных?


 
Anatoly Podgoretsky ©   (2007-11-29 09:28) [15]

> Riply  (29.11.2007 04:41:13)  [13]

Ты в ответе за кого приручил
Экзюпери


 
Rouse_ ©   (2007-11-29 09:57) [16]

function GetDrivesData(const NotNT: Boolean): String;

 function GetFreeSpace(Disk: String): String;
 var
   FA, TS: Int64;
   TF: TLargeInteger;
 begin
   if GetDiskFreeSpaceEx(PChar(Disk), FA, TS, @TF) then
     Result := IntToStr(Floor((TF / 1024) / 1024)) + " Мб"
   else
     Result := "не определено";
 end;

 function GetDriveFSName(Volume: String) : String;
 var
   VolumeName, FileSystemName: array [0..MAX_PATH - 1] of Char;
   VolumeSerialNo, MaxComponentLength, FileSystemFlags: LongWord;
 begin
   Result := "";
   if GetVolumeInformation(PChar(Volume), VolumeName, MAX_PATH, @VolumeSerialNo,
     MaxComponentLength, FileSystemFlags, FileSystemName, MAX_PATH) then
     Result :=  String(FileSystemName)
   else
     Result := "";
 end;

const
 NameSize = 4;
 VolumeCount = 26;
 TotalSize = NameSize * VolumeCount;
 Report = "  - Диск: %s %s"#13#10;
 ReportFull = "  - Диск: %s %s, файловая система: %s, свободно: %s"#13#10;
var
 Buff, Volume, svQuery: String;
 lpQuery: array [0..MAXCHAR - 1] of Char;
 I, Count: Integer;
begin
 SetLength(Buff, TotalSize);
 Count := GetLogicalDriveStrings(TotalSize, @Buff[1]) div NameSize;
 if Count = 0 then
   Result := "Диски не определены"
 else
   Result := "";
   for I := 0 to Count - 1 do
   begin
     Volume := PChar(@Buff[(I * NameSize) + 1]);
     case GetDriveType(PChar(Volume)) of
       DRIVE_UNKNOWN: Result := Result + (Format(Report, [Volume,
         "Тип диска не определен."]));
       DRIVE_NO_ROOT_DIR:
         Result := Result + (Format(Report, [Volume,
           "Корневой путь диска не верен. Тип диска не определен."]));
       DRIVE_REMOVABLE:
       begin
         Volume[3] := #0;
         QueryDosDevice(PChar(Volume), @lpQuery[0], MAXCHAR);
         Volume[3] := "\";
         if String(lpQuery) = "\Device\Floppy0" then
           Result := Result + (Format(Report, [Volume, "Привод гибких дисков."]))
         else
           if String(lpQuery) = "\Device\Floppy1" then
             Result := Result + (Format(Report, [Volume, "Привод гибких дисков."]))
           else
             Result := Result + (Format(ReportFull,
               [Volume, "Флэш накопитель",
               GetDriveFSName(Volume), GetFreeSpace(Volume)]));
       end;
       DRIVE_FIXED:
       begin
         if NotNT then
         begin
           Volume[3] := #0;
           QueryDosDevice(PChar(Volume), @lpQuery[0], MAXCHAR);
           Volume[3] := "\";
           if Length(String(lpQuery)) = 2 then
             Result := Result + (Format(ReportFull, [Volume,
               "Логический", GetDriveFSName(Volume), GetFreeSpace(Volume)]))
           else
             Result := Result + (Format(Report, [Volume,
               "Диск является отображением папки находящейся по адресу: "" +
                 String(lpQuery) + """]));
           Continue;
         end;
         Volume[3] := #0;
         QueryDosDevice(PChar(Volume), @lpQuery[0], MAXCHAR);
         Volume[3] := "\";
         if Copy(String(lpQuery), 1, 22)  = "\Device\HarddiskVolume" then
           Result := Result + (Format(ReportFull, [Volume,
             "Логический", GetDriveFSName(Volume), GetFreeSpace(Volume)]))
         else
           Result := Result + (Format(Report, [Volume,
             "Диск является отображением папки находящейся по адресу: "" +
               Copy(String(lpQuery), 5, Length(String(lpQuery))) + """]));
       end;
       DRIVE_REMOTE:
       begin
         Volume[3] := #0;
         QueryDosDevice(PChar(Volume), @lpQuery[0], MAXCHAR);
         Volume[3] := "\";
         svQuery := Copy(String(lpQuery), 29, Length(String(lpQuery)));
         Delete(svQuery, 1, Pos("\", svQuery));
         Result := Result + (Format(ReportFull, [Volume,
           "Удаленный (сетевой) диск. Сетевой путь: "\\" + svQuery + """,
           GetDriveFSName(Volume), GetFreeSpace(Volume)]));
       end;
       DRIVE_CDROM:
         Result := Result + (Format(Report, [Volume,"CD-ROM."]));
       DRIVE_RAMDISK:
         Result := Result + (Format(ReportFull, [Volume, "RAM диск.",
           GetDriveFSName(Volume), GetFreeSpace(Volume)]));
     else
       Result := (Format(Report, [Volume, "Тип диска не определен."]));
     end;
   end;
end;



Страницы: 1 вся ветка

Текущий архив: 2007.12.30;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.017 c
3-1188291869
parivet
2007-08-28 13:04
2007.12.30
TClientDataSet


15-1196191309
Anatoly Podgoretsky
2007-11-27 22:21
2007.12.30
Заветы, советы и КИ и тормоза


2-1196447952
aspid03
2007-11-30 21:39
2007.12.30
как вытащить из Access базы Word document


15-1196529516
@!!ex
2007-12-01 20:18
2007.12.30
Как переделать lib в dll?


11-1169739965
Виталий*
2007-01-25 18:46
2007.12.30
Помогите с юникодом пожалуйста