Восстанавление длинных имен файлов по известным коротким

Советы » Файлы » Восстанавление длинных имен файлов по известным коротким

//--------------------------------------------------------------------- // Восстанавливает длинные имена файлов по известным коротким (8.3) // В качестве аргумента принимает полный или неполный (в т.ч. относительный) // путь к файлу, например 'C:WINDOWSРАБОЧИ~1ИТАКДА~1.LNK' или // '....COMMON~1BORLAN~1BDEBDEREA~1.TXT'. Понимает сетевые имена. // Возвращает полный(!) путь типа 'C:WindowsРабочий столи так далее.lnk', // 'C:Program FilesCommon FilesBorland SharedBDEdereadme.txt', // '\Computer esourceFolder with long nameFile with long name.ext' //---------------------------------------------------------------------
function

RestoreLongName(fn: string

): string

;
  function

LookupLongName(const

filename: string

): string

;
  var


    sr: TSearchRec;   begin


    if

FindFirst(filename, faAnyFile, sr) = 0 then

      Result := sr.Name     else

      Result := ExtractFileName(filename);     SysUtils.FindClose(sr);   end

;
  function

GetNextFN: string

;   var


    i: integer;   begin


    Result := '';     if

Pos('', fn) = 1 then

    begin

      Result := '';       fn := Copy(fn, 3, length(fn) - 2);       i := Pos('', fn);       if

i <> 0 then

      begin

        Result := Result + Copy(fn, 1, i);         fn := Copy(fn, i + 1, length(fn) - i);
      end

;     end

;     i := Pos('', fn);     if

i <> 0 then

    begin

      Result := Result + Copy(fn, 1, i - 1);       fn := Copy(fn, i + 1, length(fn) - i);     end

    else

    begin

      Result := Result + fn;       fn := '';     end

;   end

;
var


  name: string

; begin



  fn := ExpandFileName(fn);   Result := GetNextFN;   repeat


    name := GetNextFN;     Result := Result + '' + LookupLongName(Result + '' + name);   until

length(fn) = 0; end

;
 

Другое по теме:

Категории

Статьи

Советы

Copyright © 2022 - All Rights Reserved - www.delphirus.com