Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Получить сетевой путь к зашаренному файлу по локальному пути 2

Delphi , Интернет и Сети , Сеть

Получить сетевой путь к зашаренному файлу по локальному пути 2

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

 function GetUNCName(const LocalPath: string): string;
 var
   BufferSize: DWord;
   DummyBuffer: Byte;
   Buffer: Pointer;
   Error: DWord;
 begin
   BufferSize := 1;
   WNetGetUniversalName(PChar(LocalPath), UNIVERSAL_NAME_INFO_LEVEL, @DummyBuffer, BufferSize);
   Buffer := AllocMem(BufferSize);
   try
     Error := WNetGetUniversalName(PChar(LocalPath), UNIVERSAL_NAME_INFO_LEVEL, Buffer, BufferSize);
     if Error <> NO_ERROR then
       begin
         SetLastError(Error);
         RaiseLastWin32Error;
       end;
     Result := PUniversalNameInfo(Buffer)^.lpUniversalName
   finally
     FreeMem(Buffer);
   end;
 end;

 procedure TForm1.Button1Click(Sender: TObject);
 begin
  Label1.Caption := GetUNCName('y:\xyz\')
 end;

Привет! Вот перевод кода на русский язык:

Функция GetUNCName

Функция принимает локальный путь к файлу в виде входного параметра (LocalPath) и возвращает соответствующий UNC-направление (Universal Naming Convention) сети.

  1. Она инициализирует некоторые переменные: BufferSize, DummyBuffer, Buffer и Error.
  2. Затем она вызывает функцию WNetGetUniversalName, чтобы получить UNC-имя для указанного локального пути к файлу. Эта функция заполняет буфер информацией о UNC-имени.
  3. Если при этом возникает ошибка, она устанавливает код ошибки с помощью SetLastError и поднимает Win32-ошибку с помощью RaiseLastWin32Error.
  4. Затем функция выделяет память для буфера с помощью AllocMem и присваивает ее переменной Buffer.
  5. Функция вызывает WNetGetUniversalName снова, на этот раз с выделенной памятью и ее размером (BufferSize). Если при этом возникает ошибка, она поднимает Win32-ошибку как раньше.
  6. Если ошибок не возникло, функция извлекает UNC-имя из буфера с помощью PUniversalNameInfo и возвращает его в виде результата.

Процедура Button1Click

Эта процедура прикреплена к событию клика кнопки на форме (TForm1). Когда кнопка кликается, она вызывает функцию GetUNCName с локальным путем к файлу 'y:\xyz\' и присваивает полученное UNC-направление в виде результата переменной Label1.Caption.

Замечания

  • Функция WNetGetUniversalName используется для конвертации локальных путей в UNC-пути. Эта функция требует Windows NT 4.0 или позднее.
  • Поскольку функция ожидает строку, а файловый путь передается в виде типа Delphi-строки (string), необходима конверсия PChar.
  • Вызов FreeMem используется для освобождения выделенной памяти для буфера с помощью AllocMem. Это обеспечивает предотвращение утечек памяти.

В целом, этот код предоставляет полезную утилиту для конвертации локальных путей к файлам в UNC-направления сети в приложениях Delphi.

В статье описывается функция на языке Delphi, которая преобразует локальный путь к зашаренному файлу в сетевой путь (UNC-название) и пример ее использования в приложении.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: Сеть ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:18:47/0.0059089660644531/1