2007. május 19., szombat

Convert from UNC notation to Drive letter?


Problem/Question/Abstract:

Convert from UNC notation to Drive letter?

Answer:

The function ExpandUNCFileName function converts a mapped path/file to UNC, but how can this process be reversed?

There is no simple function that would do the trick, you have to go through all existing 'remote' drives, look at their UNC name and compare them with the one you are interested in:


program P;

procedure TForm1.Button1Click(Sender: TObject);
const
  YOURUNCFILENAME = '\\ISS\VOL1\ISS\SHARE\';
var
  Drive: Char;
  Drlist: TStringList;
  Filist: TStringList;
  I: integer;
begin
  Drlist := TStringList.Create;
  Filist := TStringList.Create;
  for Drive := 'a' to 'z' do
    case GetDriveType(PChar(Drive + ':\')) of
      DRIVE_REMOTE:
        begin
          Filist.Add(expanduncfilename(Drive + ':\'));
          Drlist.Add(Drive)
        end
    end;
  {......}
  I := Filist.indexof(YOURUNCFILENAME);
  if I > -1 then
    ShowMessage(YOURUNCFILENAME + 'Mapped to drive ' + Drlist[I]);

  Drlist.Free;
  Filist.Free
end;

end.

Nincsenek megjegyzések:

Megjegyzés küldése