Форум: "Прочее";
Текущий архив: 2007.12.30;
Скачать: [xml.tar.bz2];
ВнизЛокальный логический диск 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;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.006 c