📄 cls.ftp_service.crackfile.htm
字号:
<div class="PDM_AB_Body">
See source code of method <a class="PDM_AB_See" href="../../code/ftp.prg/cls.ftp_service.getftpdirectoryarray.htm" title="Skip to method FTP_SERVICE::GetFTPDirectoryArray()">FTP_SERVICE::GetFTPDirectoryArray()</a>
</div>
</div><!-- Example End -->
<div class="PDM_AB_SeeAlso"><!-- SeeAlso Begin -->
<span class="PDM_AB_Head">
See also
</span>
<div class="PDM_AB_Body">
<a class="PDM_AB_See" href="../../code/ftp.prg/cls.ftp_service.crackdate.htm" title="Skip to method FTP_SERVICE::CrackDate()">FTP_SERVICE::CrackDate()</a> |
<a class="PDM_AB_See" href="../../code/ftp.prg/cls.ftp_service.crackattributes.htm" title="Skip to method FTP_SERVICE::CrackAttributes()">FTP_SERVICE::CrackAttributes()</a> |
<a class="PDM_AB_See" href="../../code/ftp.prg/cls.ftp_service.getftpdirectoryarray.htm" title="Skip to method FTP_SERVICE::GetFTPDirectoryArray()">FTP_SERVICE::GetFTPDirectoryArray()</a>
</div><!-- Body End -->
<!--- "Applies to" need to be inserted here---->
<PlaceAppliesTo_Here />
<!--- /"Applies to" need to be inserted here---->
</div><!-- SeeAlso End -->
<!-- /Created with _diamp_pdm_ab by Agnes Beste 03.09.2007 19:34 -->
<div class="SC">
<img onclick="ExpandSC('SP_1',-1);"class="imgEC" src="../../imgs/uptab.gif" alt="Expand/Collapse source code of procedure CrackFile" id="IMG_SP_1" />
<span ondblclick="ExpandSC('SP_1',-1);" class="SCCaption"><a name="FTP_SERVICE">Source Code</a></span>
<div ondblclick="ExpandSC('SP_1',-1);" class="SCE" id="TX_SP_1">
<!-- Code Begin -->
<pre class="PDMCODE PDMNor" ><span class='PDMResK'>LPARAMETERS</span> <span class='PDMVar'>INP</span> <span class='PDMVar'>lcString</span><span class='PDMOper'>,</span> <span class='PDMVar'>CHNGREF</span> <span class='PDMVar'>laDirectory</span>
<span class='PDMResK'>LOCAL</span> <span class='PDMVar'>lcFileName</span><span class='PDMOper'>,</span> <span class='PDMVar'>lcAlterName</span><span class='PDMOper'>,</span> <span class='PDMVar'>lnSizeHigh</span><span class='PDMOper'>,</span> <span class='PDMVar'>lnSizeLow</span><span class='PDMOper'>,</span> <span class='PDMVar'>lnFileSize</span><span class='PDMOper'>,</span> <span class='PDMOper'>;</span>
<span class='PDMVar'>lcAttributes</span><span class='PDMOper'>,</span> <span class='PDMVar'>lnArrayLen</span><span class='PDMOper'>,</span> <span class='PDMVar'>lcTimeBuff</span><span class='PDMOper'>,</span> <span class='PDMOper'>;</span>
<span class='PDMVar'>ldCreateDate</span><span class='PDMOper'>,</span> <span class='PDMVar'>ldAccessDate</span><span class='PDMOper'>,</span> <span class='PDMVar'>ldWriteDate</span><span class='PDMOper'>,</span> <span class='PDMVar'>laNewArray</span><span class='PDMOper'>,</span> <span class='PDMVar'>lnResult</span><span class='PDMOper'>,</span><span class='PDMVar'>lcPom</span>
<span class='PDMResK'>IF</span> <span class='PDMResF'>TYPE</span><span class='PDMOper'>(</span><span class='PDMStr'>'laDirectory[1, 1]'</span><span class='PDMOper'>)</span> <span class='PDMOper'>=</span> <span class='PDMStr'>'L'</span> <span class='PDMCom'>&& Array Has Not Been Filed </span>
<span class='PDMCom'> * Force Record size of 1</span>
<span class='PDMResK'>DIMENSION</span> <span class='PDMVar'>laDirectory</span> <span class='PDMOper'>[</span><span class='PDMLit'>1</span><span class='PDMOper'>,</span> <span class='PDMLit'>7</span><span class='PDMOper'>]</span>
<span class='PDMResK'>ELSE</span>
<span class='PDMOper'>*</span> <span class='PDMVar'>Expand</span> <span class='PDMResK'>Array</span>
<span class='PDMResK'>DIMENSION</span> <span class='PDMVar'>laDirectory</span> <span class='PDMOper'>[</span><span class='PDMResF'>ALEN</span><span class='PDMOper'>(</span><span class='PDMVar'>laDirectory</span><span class='PDMOper'>,</span> <span class='PDMLit'>1</span><span class='PDMOper'>)</span> <span class='PDMOper'>+</span> <span class='PDMLit'>1</span><span class='PDMOper'>,</span> <span class='PDMLit'>7</span><span class='PDMOper'>]</span>
<span class='PDMResK'>ENDIF</span>
<span class='PDMCom'> * Get new Array Position</span>
<span class='PDMVar'>lnArrayLen</span> <span class='PDMOper'>=</span> <span class='PDMResF'>ALEN</span><span class='PDMOper'>(</span><span class='PDMVar'>laDirectory</span><span class='PDMOper'>,</span> <span class='PDMLit'>1</span><span class='PDMOper'>)</span>
<span class='PDMCom'>*!* 4 DWORD dwFileAttributes; </span>
<span class='PDMCom'>*!* 8 FILETIME ftCreationTime; </span>
<span class='PDMCom'>*!* 8 FILETIME ftLastAccessTime; </span>
<span class='PDMCom'>*!* 8 FILETIME ftLastWriteTime; </span>
<span class='PDMCom'>*!* 4 DWORD nFileSizeHigh; </span>
<span class='PDMCom'>*!* 4 DWORD nFileSizeLow; </span>
<span class='PDMCom'>*!* 4 DWORD dwReserved0; </span>
<span class='PDMCom'>*!* 4 DWORD dwReserved1; </span>
<span class='PDMCom'>*!* 4 TCHAR cFileName[ MAX_PATH ]; </span>
<span class='PDMCom'>*!* TCHAR cAlternateFileName[ 14 ]; </span>
<span class='PDMCom'>*!* typedef struct _FILETIME { </span>
<span class='PDMCom'>*!* DWORD dwLowDateTime; </span>
<span class='PDMCom'>*!* DWORD dwHighDateTime; </span>
<span class='PDMCom'>*!* } FILETIME, *PFILETIME; </span>
<span class='PDMCom'> lcFileName = SUBSTR(lcString, 45, MAX_PATH)</span>
<span class='PDMCom'> lcAlterName = RIGHT(lcString, 14)</span>
<span class='PDMCom'> lcFileName = LEFT(lcFileName, AT(cNull, lcFileName) - 1) && Copy out just the File Name Text</span>
<span class='PDMVar'>lcAlterName</span> <span class='PDMOper'>=</span> <span class='PDMResF'>LEFT</span><span class='PDMOper'>(</span><span class='PDMVar'>lcAlterName</span><span class='PDMOper'>,</span> <span class='PDMResF'>AT</span><span class='PDMOper'>(</span><span class='PDMVar'>cNull</span><span class='PDMOper'>,</span> <span class='PDMVar'>lcAlterName</span><span class='PDMOper'>)</span> <span class='PDMOper'>-</span> <span class='PDMLit'>1</span><span class='PDMOper'>)</span>
<span class='PDMCom'> * Convert File Size DWORDs</span>
<span class='PDMVar'>lnSizeHigh</span> <span class='PDMOper'>=</span> <span class='PDMOper'>(</span><span class='PDMResF'>ASC</span><span class='PDMOper'>(</span><span class='PDMResF'>SUBSTR</span><span class='PDMOper'>(</span><span class='PDMVar'>lcString</span><span class='PDMOper'>,</span> <span class='PDMLit'>29</span><span class='PDMOper'>,</span> <span class='PDMLit'>1</span><span class='PDMOper'>)</span><span class='PDMOper'>)</span> <span class='PDMOper'>*</span> <span class='PDMVar'>BYTE_1</span><span class='PDMOper'>)</span> <span class='PDMOper'>+</span> <span class='PDMOper'>;</span>
<span class='PDMOper'>(</span><span class='PDMResF'>ASC</span><span class='PDMOper'>(</span><span class='PDMResF'>SUBSTR</span><span class='PDMOper'>(</span><span class='PDMVar'>lcString</span><span class='PDMOper'>,</span> <span class='PDMLit'>30</span><span class='PDMOper'>,</span> <span class='PDMLit'>1</span><span class='PDMOper'>)</span><span class='PDMOper'>)</span> <span class='PDMOper'>*</span> <span class='PDMVar'>BYTE_2</span><span class='PDMOper'>)</span> <span class='PDMOper'>+</span> <span class='PDMOper'>;</span>
<span class='PDMOper'>(</span><span class='PDMResF'>ASC</span><span class='PDMOper'>(</span><span class='PDMResF'>SUBSTR</span><span class='PDMOper'>(</span><span class='PDMVar'>lcString</span><span class='PDMOper'>,</span> <span class='PDMLit'>31</span><span class='PDMOper'>,</span> <span class='PDMLit'>1</span><span class='PDMOper'>)</span><span class='PDMOper'>)</span> <span class='PDMOper'>*</span> <span class='PDMVar'>BYTE_3</span><span class='PDMOper'>)</span> <span class='PDMOper'>+</span> <span class='PDMOper'>;</span>
<span class='PDMOper'>(</span><span class='PDMResF'>ASC</span><span class='PDMOper'>(</span><span class='PDMResF'>SUBSTR</span><span class='PDMOper'>(</span><span class='PDMVar'>lcString</span><span class='PDMOper'>,</span> <span class='PDMLit'>32</span><span class='PDMOper'>,</span> <span class='PDMLit'>1</span><span class='PDMOper'>)</span><span class='PDMOper'>)</span> <span class='PDMOper'>*</span> <span class='PDMVar'>BYTE_4</span><span class='PDMOper'>)</span>
<span class='PDMVar'>lnSizeLow</span> <span class='PDMOper'>=</span> <span class='PDMOper'>(</span><span class='PDMResF'>ASC</span><span class='PDMOper'>(</span><span class='PDMResF'>SUBSTR</span><span class='PDMOper'>(</span><span class='PDMVar'>lcString</span><span class='PDMOper'>,</span> <span class='PDMLit'>33</span><span class='PDMOper'>,</span> <span class='PDMLit'>1</span><span class='PDMOper'>)</span><span class='PDMOper'>)</span> <span class='PDMOper'>*</span> <span class='PDMVar'>BYTE_1</span><span class='PDMOper'>)</span> <span class='PDMOper'>+</span> <span class='PDMOper'>;</span>
<span class='PDMOper'>(</span><span class='PDMResF'>ASC</span><span class='PDMOper'>(</span><span class='PDMResF'>SUBSTR</span><span class='PDMOper'>(</span><span class='PDMVar'>lcString</span><span class='PDMOper'>,</span> <span class='PDMLit'>34</span><span class='PDMOper'>,</span> <span class='PDMLit'>1</span><span class='PDMOper'>)</span><span class='PDMOper'>)</span> <span class='PDMOper'>*</span> <span class='PDMVar'>BYTE_2</span><span class='PDMOper'>)</span> <span class='PDMOper'>+</span> <span class='PDMOper'>;</span>
<span class='PDMOper'>(</span><span class='PDMResF'>ASC</span><span class='PDMOper'>(</span><span class='PDMResF'>SUBSTR</span><span class='PDMOper'>(</span><span class='PDMVar'>lcString</span><span class='PDMOper'>,</span> <span class='PDMLit'>35</span><span class='PDMOper'>,</span> <span class='PDMLit'>1</span><span class='PDMOper'>)</span><span class='PDMOper'>)</span> <span class='PDMOper'>*</span> <span class='PDMVar'>BYTE_3</span><span class='PDMOper'>)</span> <span class='PDMOper'>+</span> <span class='PDMOper'>;</span>
<span class='PDMOper'>(</span><span class='PDMResF'>ASC</span><span class='PDMOper'>(</span><span class='PDMResF'>SUBSTR</span><span class='PDMOper'>(</span><span class='PDMVar'>lcString</span><span class='PDMOper'>,</span> <span class='PDMLit'>36</span><span class='PDMOper'>,</span> <span class='PDMLit'>1</span><span class='PDMOper'>)</span><span class='PDMOper'>)</span> <span class='PDMOper'>*</span> <span class='PDMVar'>BYTE_4</span><span class='PDMOper'>)</span>
<span class='PDMOper'>*</span> <span class='PDMResK'>Build</span> <span class='PDMResK'>File</span> <span class='PDMResK'>Size</span>
<span class='PDMVar'>lnFileSize</span> <span class='PDMOper'>=</span> <span class='PDMOper'>(</span><span class='PDMVar'>lnSizeHigh</span> <span class='PDMOper'>*</span> <span class='PDMVar'>MAXDWORD</span><span class='PDMOper'>)</span> <span class='PDMOper'>+</span> <span class='PDMVar'>lnSizeLow</span>
<span class='PDMOper'>*</span><span class='PDMOper'>!</span><span class='PDMOper'>*</span> <span class='PDMVar'>FtpGetFileSize</span> <span class='PDMVar'>does</span> <span class='PDMOper'>NOT</span> <span class='PDMVar'>work</span> <span class='PDMResK'>as</span> <span class='PDMVar'>expected</span> <span class='PDMResK'>for</span> <span class='PDMResK'>files</span> <span class='PDMVar'>greater</span> <span class='PDMResK'>then</span> <span class='PDMVar'>4Gb</span> <span class='PDMOper'>(</span><span class='PDMVar'>dwFileSizeHigh</span> <span class='PDMVar'>always</span> <span class='PDMResK'>NULL</span><span class='PDMOper'>)</span>
<span class='PDMOper'>*</span><span class='PDMOper'>!</span><span class='PDMOper'>*</span> <span class='PDMVar'>http</span>:<span class='PDMOper'>/</span><span class='PDMOper'>/</span><span class='PDMVar'>groups</span><span class='PDMOper'>.</span><span class='PDMVar'>google</span><span class='PDMOper'>.</span><span class='PDMVar'>com</span><span class='PDMOper'>.</span><span class='PDMVar'>ar</span><span class='PDMOper'>/</span><span class='PDMResK'>group</span><span class='PDMOper'>/</span><span class='PDMVar'>microsoft</span><span class='PDMOper'>.</span><span class='PDMResK'>public</span><span class='PDMOper'>.</span><span class='PDMResK'>windows</span><span class='PDMOper'>.</span><span class='PDMVar'>inetexplorer</span><span class='PDMOper'>.</span><span class='PDMVar'>ie5</span><span class='PDMOper'>.</span><span class='PDMVar'>programming</span><span class='PDMOper'>.</span><span class='PDMVar'>wininet</span><span class='PDMOper'>/</span><span class='PDMVar'>browse_thread</span><span class='PDMOper'>/</span><span class='PDMVar'>thread</span><span class='PDMOper'>/</span><span class='PDMVar'>3c118ed4c7c32269</span><span class='PDMOper'>/</span><span class='PDMVar'>791a868311e60a00</span><span class='PDMOper'>?</span><span class='PDMVar'>lnk</span><span class='PDMOper'>=</span><span class='PDMVar'>st</span><span class='PDMOper'>&</span><span class='PDMVar'>q</span><span class='PDMOper'>=</span><span class='PDMVar'>ftpfindfirstfile</span><span class='PDMOper'>+</span><span class='PDMOper'>AND</span><span class='PDMOper'>+</span><span class='PDMVar'>large</span><span class='PDMOper'>+</span><span class='PDMResK'>files</span><span class='PDMOper'>&</span><span class='PDMVar'>rnum</span><span class='PDMOper'>=</span><span class='PDMLit'>2</span><span class='PDMOper'>&</span><span class='PDMVar'>hl</span><span class='PDMOper'>=</span><span class='PDMVar'>es</span><span class='PDMOper'>#</span><span class='PDMVar'>791a868311e60a00</span>
<span class='PDMOper'>=</span><span class='PDMResK'>This</span><span class='PDMOper'>.</span><span class='PDMVar'>GetFileSize</span><span class='PDMOper'>(</span><span class='PDMVar'>lcFileName</span><span class='PDMOper'>,</span><span class='PDMOper'>@</span><span class='PDMVar'>lnFileSize</span><span class='PDMOper'>)</span>
<span class='PDMCom'> * Convert File Date</span>
<span class='PDMCom'> * Get File Create DateTime</span>
<span class='PDMVar'>lcTimeBuff</span> <span class='PDMOper'>=</span> <span class='PDMResF'>SUBSTR</span><span class='PDMOper'>(</span><span class='PDMVar'>lcString</span><span class='PDMOper'>,</span> <span class='PDMLit'>5</span><span class='PDMOper'>,</span> <span class='PDMLit'>8</span><span class='PDMOper'>)</span>
<span class='PDMVar'>ldCreateDate</span> <span class='PDMOper'>=</span> <span class='PDMResK'>This</span><span class='PDMOper'>.</span><span class='PDMVar'>CrackDate</span><span class='PDMOper'>(</span><span class='PDMVar'>lcTimeBuff</span><span class='PDMOper'>)</span>
<span class='PDMCom'> * Get File Last Access DateTime</span>
<span class='PDMVar'>lcTimeBuff</span> <span class='PDMOper'>=</span> <span class='PDMResF'>SUBSTR</span><span class='PDMOper'>(</span><span class='PDMVar'>lcString</span><span class='PDMOper'>,</span> <span class='PDMLit'>13</span><span class='PDMOper'>,</span> <span class='PDMLit'>8</span><span class='PDMOper'>)</span>
<span class='PDMVar'>ldAccessDate</span> <span class='PDMOper'>=</span> <span class='PDMResK'>This</span><span class='PDMOper'>.</span><span class='PDMVar'>CrackDate</span><span class='PDMOper'>(</span><span class='PDMVar'>lcTimeBuff</span><span class='PDMOper'>)</span>
<span class='PDMCom'> * Get File Last Write DateTime</span>
<span class='PDMVar'>lcTimeBuff</span> <span class='PDMOper'>=</span> <span class='PDMResF'>SUBSTR</span><span class='PDMOper'>(</span><span class='PDMVar'>lcString</span><span class='PDMOper'>,</span> <span class='PDMLit'>21</span><span class='PDMOper'>,</span> <span class='PDMLit'>8</span><span class='PDMOper'>)</span>
<span class='PDMVar'>ldWriteDate</span> <span class='PDMOper'>=</span> <span class='PDMResK'>This</span><span class='PDMOper'>.</span><span class='PDMVar'>CrackDate</span><span class='PDMOper'>(</span><span class='PDMVar'>lcTimeBuff</span><span class='PDMOper'>)</span>
<span class='PDMCom'> * Get File Attributes</span>
<span class='PDMVar'>lcAttributes</span> <span class='PDMOper'>=</span> <span class='PDMResK'>This</span><span class='PDMOper'>.</span><span class='PDMVar'>CrackAttributes</span><span class='PDMOper'>(</span><span class='PDMResF'>LEFT</span><span class='PDMOper'>(</span><span class='PDMVar'>lcString</span><span class='PDMOper'>,</span> <span class='PDMLit'>4</span><span class='PDMOper'>)</span><span class='PDMOper'>)</span>
<span class='PDMVar'>laDirectory</span><span class='PDMOper'>[</span><span class='PDMVar'>lnArrayLen</span><span class='PDMOper'>,</span> <span class='PDMLit'>1</span><span class='PDMOper'>]</span> <span class='PDMOper'>=</span> <span class='PDMResF'>ALLTRIM</span><span class='PDMOper'>(</span><span class='PDMVar'>lcFileName</span><span class='PDMOper'>)</span>
<span class='PDMVar'>laDirectory</span><span class='PDMOper'>[</span><span class='PDMVar'>lnArrayLen</span><span class='PDMOper'>,</span> <span class='PDMLit'>2</span><span class='PDMOper'>]</span> <span class='PDMOper'>=</span> <span class='PDMResF'>ALLTRIM</span><span class='PDMOper'>(</span><span class='PDMVar'>lcAlterName</span><span class='PDMOper'>)</span>
<span class='PDMVar'>laDirectory</span><span class='PDMOper'>[</span><span class='PDMVar'>lnArrayLen</span><span class='PDMOper'>,</span> <span class='PDMLit'>3</span><span class='PDMOper'>]</span> <span class='PDMOper'>=</span> <span class='PDMVar'>lnFileSize</span>
<span class='PDMVar'>laDirectory</span><span class='PDMOper'>[</span><span class='PDMVar'>lnArrayLen</span><span class='PDMOper'>,</span> <span class='PDMLit'>4</span><span class='PDMOper'>]</span> <span class='PDMOper'>=</span> <span class='PDMVar'>ldCreateDate</span>
<span class='PDMVar'>laDirectory</span><span class='PDMOper'>[</span><span class='PDMVar'>lnArrayLen</span><span class='PDMOper'>,</span> <span class='PDMLit'>5</span><span class='PDMOper'>]</span> <span class='PDMOper'>=</span> <span class='PDMVar'>ldAccessDate</span>
<span class='PDMVar'>laDirectory</span><span class='PDMOper'>[</span><span class='PDMVar'>lnArrayLen</span><span class='PDMOper'>,</span> <span class='PDMLit'>6</span><span class='PDMOper'>]</span> <span class='PDMOper'>=</span> <span class='PDMVar'>ldWriteDate</span>
<span class='PDMVar'>laDirectory</span><span class='PDMOper'>[</span><span class='PDMVar'>lnArrayLen</span><span class='PDMOper'>,</span> <span class='PDMLit'>7</span><span class='PDMOper'>]</span> <span class='PDMOper'>=</span> <span class='PDMVar'>lcAttributes</span>
<span class='PDMResK'>RETURN</span> </pre>
<!-- Code End -->
</div>
</div>
</div>
<div class="diaxp_mfoot"> <div class="PDM_AB_CopyRight"><!-- Footer Begin -->
<hr />
<div class="PDM_AB_Body">
© 2004-03-23 Robert Abram, © 24.11.2005 Martina Jindrú
</div><!-- Body End -->
</div><!-- Footer End -->
</div>
<script language="JavaScript" type="text/javascript">
lo=document.getElementById("TX_SP_1");
lo.XType="SourceCode";
lo.Dir="../../imgs/";
</script>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -