На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Rouse_, jack128, Krid
  
    > Восстанавление длинных имен файлов
      Функция восстанавливает длинные имена существующих файлов (с удалёнными не прокатит).
      На входе: short(string) filename,
      на выходе: long filename(string) или пустая строка(string), в случае некоректного имени файла.

      ExpandedWrap disabled
        uses Windows, SysUtils;
         
        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;
          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;
                end;
            if (CurPath='\\') or (CurPath='\') then Net:= True;
            if Root then
            begin
               if Net then
                  begin
                     RootGuard:= -1;
                     Net:= False;
                  end;
               Inc(RootGuard);
               if RootGuard>0 then Root:= False;
            end
            else
               begin
                  FindHandle:= FindFirstFile(PChar(CurPath), FindData);
                  OutPath:= OutPath+'\'+FindData.cFileName;
                  Windows.FindClose(FindHandle);
                  CurPath:= CurPath+'\';
               end;
            CurP := CharNext(CurP);
          end;
          Result:= OutPath;
        end;


      Эта тема была разделена из темы "Восстанавление длинных имен файлов"
      Сообщение отредактировано: Chess -
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0222 ]   [ 17 queries used ]   [ Generated: 16.04.24, 12:49 GMT ]