Einzelnen Beitrag anzeigen

HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#13

AW: Extrem langen Pfad kürzen, Result leer?

  Alt 2. Jan 2017, 20:36
Hmm..

Damit geht es:

Delphi-Quellcode:
// nur wenn NtfsDisable8dot3NameCreation=0
function GetShortName(sLongName: WideString): WideString;
var
  sShortName: WideString;
  nShortNameLen: Integer;
begin
  sShortName := '';
  nShortNameLen := 0;
  nShortNameLen := GetShortPathNameW(PWideChar(sLongName), nil, nShortNameLen);
  if nShortNameLen > 0 then begin
    SetLength(sShortName, nShortNameLen);
    nShortNameLen := GetShortPathNameW(PWideChar(sLongName), PWideChar(sShortName), nShortNameLen);
    if (nShortNameLen = 0) then
      raise Exception.Create(SysErrorMessage(GetLastError));
    Result := sShortName;
  end else begin
    raise Exception.Create(SysErrorMessage(GetLastError));
  end;
  Result := sShortName;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  s : Widestring;
begin
  s := '\\?\D:\0123456789\11111111111111111111111111111111111111111111111111';
  s := s + '\22222222222222222222222222222222222222222222222222';
  s := s + '\33333333333333333333333333333333333333333333333333';
  s := s + '\44444444444444444444444444444444444444444444444444';
  s := s + '\55555555555555555555555555555\Datei.txt';

  Edit1.Text := GetShortName(s); // \\?\D:\012345~1\111111~1\222222~1\333333~1\444444~1\555555~1\Datei.txt
end;
Selbst unter Delphi 6

Bedingt aber, das NtfsDisable8dot3NameCreation=0 gesetzt ist, eventuell VOR dem Erzeugen der Verzeichnisse und der Datei.
  Mit Zitat antworten Zitat