Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Системные функции, WinAPI, работа с железом > Получение полного и короткого пути


Автор: Rouse_ 31.01.06, 09:38
P.O.D, круто :)
Но вот так, думаю, будет попроще:

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      end;
     
      function GetLongPathNameA(lpszShortPath, lpszLongPath: PChar;
        cchBuffer: DWORD): DWORD; stdcall; external kernel32;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    function ExpandFileName(Path: String): String;
    begin
      SetLength(Result, MAX_PATH);
      if GetLongPathNameA(PChar(Path), @Result[1], MAX_PATH) = 0 then
        RaiseLastOSError;
      Result := Trim(Result);
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      S: String;
    begin
      // Получаем полное имя
      S := ExpandFileName('C:\DOCUME~1\');
      ShowMessage(S);
      // Получаем урезанное имя
      GetShortPathName(PChar(S), PChar(S), MAX_PATH);
      ShowMessage(S);
    end;
     
    end.

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)