<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=78756&amp;view=findpost&amp;p=569691</guid>
        <pubDate>Sun, 09 Jan 2005 09:47:13 +0000</pubDate>
        <title>Восстанавление длинных имен файлов</title>
        <link>https://forum.sources.ru/index.php?showtopic=78756&amp;view=findpost&amp;p=569691</link>
        <description><![CDATA[Chess: Функция восстанавливает длинные имена существующих файлов (с удалёнными не прокатит).<br>
На входе: short(string) filename, <br>
на выходе: long filename(string) или пустая строка(string), в случае некоректного имени файла.<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">uses Windows, SysUtils;</div><div class="code_line">&nbsp;</div><div class="code_line">function GetLongFileName(InputName: string): string;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;Root, Net: Boolean;</div><div class="code_line">&nbsp;&nbsp;InPath, CurP, BegP: PChar;</div><div class="code_line">&nbsp;&nbsp;CurItem, CurPath, OutPath: string;</div><div class="code_line">&nbsp;&nbsp;RootGuard: SmallInt;</div><div class="code_line">&nbsp;&nbsp;FindHandle: Cardinal;</div><div class="code_line">&nbsp;&nbsp;FindData: WIN32_FIND_DATA;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;if not FileExists(InputName) then</div><div class="code_line">&nbsp;&nbsp; &nbsp; begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Result:= &#39;&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Exit;</div><div class="code_line">&nbsp;&nbsp; &nbsp; end;</div><div class="code_line">&nbsp;&nbsp;OutPath:= InputName;</div><div class="code_line">&nbsp;&nbsp;InPath:= PChar(InputName);</div><div class="code_line">&nbsp;&nbsp;Root:= True;</div><div class="code_line">&nbsp;&nbsp;Net:= False;</div><div class="code_line">&nbsp;&nbsp;RootGuard:= 0;</div><div class="code_line">&nbsp;&nbsp;CurP:= InPath;</div><div class="code_line">&nbsp;&nbsp;while CurP^&#60;&#62;#0 do</div><div class="code_line">&nbsp;&nbsp; &nbsp; begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;BegP:= CurP;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;while (CurP^&#60;&#62;&#39;\&#39;) and (CurP^&#60;&#62;#0) do CurP := CharNext(CurP);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;SetString(CurItem, BegP, CurP - BegP);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if CurItem=&#39;&#39; then CurPath:= CurPath+&#39;\&#39; else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CurPath:= CurPath+CurItem;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if Root then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; OutPath:= CurPath;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CurPath:= CurPath+&#39;\&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (CurPath=&#39;\&#39;) or (CurPath=&#39;\&#39;) then Net:= True;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if Root then</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; if Net then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; RootGuard:= -1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Net:= False;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; Inc(RootGuard);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; if RootGuard&#62;0 then Root:= False;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end</div><div class="code_line">&nbsp;&nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FindHandle:= FindFirstFile(PChar(CurPath), FindData);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OutPath:= OutPath+&#39;\&#39;+FindData.cFileName;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Windows.FindClose(FindHandle);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CurPath:= CurPath+&#39;\&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; end;</div><div class="code_line">&nbsp;&nbsp; &nbsp;CurP := CharNext(CurP);</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;&nbsp;Result:= OutPath;</div><div class="code_line">end;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Эта тема была разделена из темы &quot;<a class='tag-url' href='http://forum.sources.ru/index.php?showtopic=77371' target='_blank'>Восстанавление длинных имен файлов</a>&quot;</span></span>]]></description>
        <author>Chess</author>
        <category>Работа с файлами, форматы файлов и данных</category>
      </item>
	
      </channel>
      </rss>
	