Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 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 Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: neon (статус: Посетитель)
Вопрос отправлен: 9 июля 2011, 14:11
Состояние вопроса: решён, ответов: 0.


Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 9 июля 2011, 19:22; участников в обсуждении: 2.
min@y™

min@y™ (статус: Доктор наук), 9 июля 2011, 15:56 [#1]:

Чойта кроме WNetEnumResource() в голову ничего не приходит.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
neon

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)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:55
Выполнено за 0.03 сек.