Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Pfade zu Dateien auf Netzlaufwerken in UNC-Pfade umwandeln (https://www.delphipraxis.net/49779-pfade-zu-dateien-auf-netzlaufwerken-unc-pfade-umwandeln.html)

ringli 15. Jul 2005 22:22


Pfade zu Dateien auf Netzlaufwerken in UNC-Pfade umwandeln
 
Hallo,

ich habe hier diesen Code gefunden der den Pfad zu gemappten Netzlaufwerken ausgibt. Ich habe diesen Code ganz minimal abgeändert um dann mit meiner Funktion komplette Pfade zu übergeben die dann in einen UNC-Pfad umgewandelt werden können.

Vielleicht kann es ja noch einer gebrauchen.

Delphi-Quellcode:
uses
  ...StrUtils;

function ResolveShareName (LocalDevice : String) : String;
var
  pLocName : PChar;
  pShareName : PChar;
  FuncResult : DWORD;
  BufLength : Cardinal;
begin
  // Speicher für die Strings allozieren!
  pLocName  := StrAlloc(255);
  pShareName := StrAlloc(255);
  // String in PString kopieren
  StrPCopy (pLocName, LocalDevice);
  BufLength := 255;
  FuncResult := WNetGetConnection(pLocName,pShareName,BufLength);
  if FuncResult <> NO_ERROR then
    Result := pLocName
  else
    Result := pShareName;
  // aufräumen!
  StrDispose (pShareName);
  StrDispose (pLocName);
end;

function ConvertPathToUNC (FileName : String) : String;
var
  Drive, UNC_PATH : String;
  PosDrive : Integer;
begin
  PosDrive := Pos(':\', FileName);
  while PosDrive > 0 do
    begin
      Drive := Copy (FileName, PosDrive - 1, 2);
      if GetDriveType(PChar(Drive)) = DRIVE_REMOTE then
        begin
          UNC_PATH := ResolveShareName (Drive);
          Delete (FileName, PosDrive - 1, 2);
          Insert (UNC_PATH, FileName, PosDrive - 1);
          PosDrive := Pos(':\', FileName);
        end
      else
        begin
          PosDrive := PosEx(':\', FileName, PosDrive + 1);
        end;
    end;
  Result := FileName;
end;
Aufruf wäre bspw. so:

Delphi-Quellcode:
showmessage(ConvertPathToUNC('S:\Test\Test.txt'));
Als Ergebnis käme dann folgendes raus:

Delphi-Quellcode:
'\\Server\Test\Test.txt'


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz