| 
| 
 | Вопрос # 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) Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |