Советы по Delphi

         

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


boris советует:

    //---------------------------------------------------------------------
// Восстанавливает длинные имена файлов по известным коротким (8.3)
// В качестве аргумента принимает полный или неполный (в т.ч. относительный)
// путь к файлу, например 'C:\WINDOWS\РАБОЧИ~1\ИТАКДА~1.LNK' или
// '..\..\COMMON~1\BORLAN~1\BDE\BDEREA~1.TXT'. Понимает сетевые имена.
// Возвращает полный(!) путь типа 'C:\Windows\Рабочий стол\и так далее.lnk',
// 'C:\Program Files\Common Files\Borland Shared\BDE\bdereadme.txt',
// '\\Computer\resource\Folder with long name\File 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;

[001034]



Содержание раздела