Навигация
Главная
Поиск
Новости
Статьи
ЧаВо
- - - - - - -
Файловый архив
Ссылки
Авторизация
Кто он-лайн

 

 
Главная arrow ЧаВо arrow Delphi arrow Как в Delphi получить длинное имя файла?
Как в Delphi получить длинное имя файла? Версия для печати
Написал Ярослав Гасов   
13.01.2003

Share this!

Можно использовать следующую функцию:

 

 

uses Windows, SysUtils{для функции FileExists()};

function GetLongFileName(InputName: string): string;
var
  Root, Net: Boolean;
  InPath, CurP, BegP: PChar;
  CurItem, CurPath, OutPath: string;
  RootGuard: SmallInt;
  FindHandle: Cardinal;
  FindData: WIN32_FIND_DATA;
begin
  if not FileExists(InputName) then
  begin
    Result:= '';
    Exit;
  end;{if not FileExists(InputName) then}
  OutPath:= InputName;
  InPath:= PChar(InputName);
  Root:= True;
  Net:= False;
  RootGuard:= 0;
  CurP:= InPath;
  while CurP^<>#0 do
  begin
    BegP:= CurP;
    while (CurP^<>'\') and (CurP^<>#0) do CurP := CharNext(CurP);
    SetString(CurItem, BegP, CurP - BegP);
    if CurItem='' then CurPath:= CurPath+'\' else
    begin
      CurPath:= CurPath+CurItem;
      if Root then
      begin
        OutPath:= CurPath;
        CurPath:= CurPath+'\';
      end;{if Root then}
    end;{if CurItem='' then CurPath:= CurPath+'\' else}
    if (CurPath='\\') or (CurPath='\') then Net:= True;
    if Root then
    begin
      if Net then
      begin
        RootGuard:= -1;
        Net:= False;
      end;{if Net then}
      Inc(RootGuard);
      if RootGuard>0 then Root:= False;
    end{if Root then}
    else
    begin
      FindHandle:= FindFirstFile(PChar(CurPath), FindData);
      OutPath:= OutPath+'\'+FindData.cFileName;
      Windows.FindClose(FindHandle);
      CurPath:= CurPath+'\';
    end;{if Root then ... else}
    CurP := CharNext(CurP);
  end;{while CurP^ <> #0 do}
  Result:= OutPath;
end;{GetLongFileName}
 
< Пред.
 
 

Производственный кооператив "Геолог" - геологоразведовательные работы, разведка месторождений, подсчет запасов, бурение скважин, геологический отчет...


GASOV.COM © 2024