|
Вопрос # 5 487/ вопрос решён / |
|
Здравствуйте, уважаемые эксперты!
Необходимо определети все диски в системе, а для сетевых дисков
определить полный путь: Z: \\192.168.1.2\test
Диски я определил. Но с определением полного пути у сетевых дисков проблема. Помогите пожалуйста.
Делаю так:
procedure TForm1.Button1Click(Sender: TObject);
var
disk: string;
i: byte;
s: string;
UINT1: UINT;
begin
s := '';
for i := 1 to DriveComboBox1.Items.Count-1 do
begin
disk := DriveComboBox1.Items.strings[i][1] + ':\';
UINT1:=GetDriveType(pchar(disk));
s := s + disk + ' ';
if UINT1=0 then s:=s+'Тип накопителя не определен.'+#13;
if UINT1=1 then s:=s+'Корневой директорий не существует.'+#13;
if UINT1=DRIVE_REMOVABLE then s:=s+'Накопитель может удаляться.'+#13;
if UINT1=DRIVE_FIXED then s:=s+'Фиксированный диск(не может быть удален).'+#13;
if UINT1=DRIVE_REMOTE then s:=s+'Удаленный накопитель(сетевой диск).'+#13;
if UINT1=DRIVE_CDROM then s:=s+'CD-ROM.'+#13;
if UINT1=DRIVE_RAMDISK then s:=s+'Виртуальный RAM-диск.'+#13
end;
showmessage(s)
end;
 |
Вопрос задал: neon (статус: Посетитель)
Вопрос отправлен: 9 июля 2011, 14:11
Состояние вопроса: решён, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 2; последнее сообщение — 9 июля 2011, 19:22; участников в обсуждении: 2.
|
min@y™ (статус: Доктор наук), 9 июля 2011, 15:56 [#1]:
Чойта кроме WNetEnumResource() в голову ничего не приходит.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
neon (статус: Посетитель), 9 июля 2011, 19:22 [#2]:
Все, решил так
Может есть еще варианты?
procedure TForm1.Button1Click(Sender: TObject);
var
MaxPath: dword;
Path: Array[0..500] of Char;
disk: string;
i: byte;
UINT1: UINT;
s :string;
Letter:Char;
begin
s := '';
for Letter := 'A' to 'Z' do
begin
disk := Letter + ':';
UINT1:=GetDriveType(pchar(disk));
if UINT1=0 then s:=s+disk+'Тип накопителя не определен.'+#13;
if UINT1=1 then Continue; //s:=s+'Корневой директорий не существует.'+#13;
if UINT1=DRIVE_REMOVABLE then s:=s+disk+'Накопитель может удаляться.'+#13;
if UINT1=DRIVE_FIXED then s:=s+disk+'Фиксированный диск(не может быть удален).'+#13;
if UINT1=DRIVE_REMOTE then
begin
s:=s+disk+'Удаленный накопитель(сетевой диск).';
fillchar(Path,sizeof(Path),0); // Обнулить статический массив
MaxPath:=Sizeof(Path);
if WNetGetConnection(PChar(disk), Path, MaxPath)=NO_ERROR then
s:=s+Path+#13;
end;
if UINT1=DRIVE_CDROM then s:=s+disk+'CD-ROM.'+#13;
if UINT1=DRIVE_RAMDISK then s:=s+disk+'Виртуальный RAM-диск.'+#13
end;
showmessage(s)
end;
|
10 июля 2011, 13:05: Статус вопроса изменён на решённый (изменил автор вопроса — neon)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|