⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cls.ftp_service.readftpfile.htm

📁 FTP Services for Visual Foxpro
💻 HTM
📖 第 1 页 / 共 5 页
字号:


<!-- /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 ReadFTPFile" 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'>lcRemoteFile</span><span class='PDMOper'>,</span><span class='PDMVar'>INP</span> <span class='PDMVar'>lcData</span><span class='PDMOper'>,</span><span class='PDMVar'>OPT_INP</span> <span class='PDMVar'>liData</span><span class='PDMOper'>,</span><span class='PDMVar'>OPT_INP</span> <span class='PDMVar'>liRStart</span><span class='PDMOper'>,</span><span class='PDMVar'>OPT_INP</span> <span class='PDMVar'>liLStart</span><span class='PDMOper'>,</span><span class='PDMVar'>OPT_INP</span> <span class='PDMVar'>liFlags</span><span class='PDMOper'>,</span><span class='PDMVar'>OPT_INP</span> <span class='PDMVar'>lnFlag</span>
      <span class='PDMResK'>LOCAL</span> <span class='PDMVar'>fResult</span><span class='PDMOper'>,</span><span class='PDMVar'>lihFTP</span><span class='PDMOper'>,</span><span class='PDMVar'>lcBuffer</span><span class='PDMOper'>,</span><span class='PDMVar'>liData</span><span class='PDMOper'>,</span><span class='PDMVar'>liRead</span><span class='PDMOper'>,</span><span class='PDMVar'>lihFile</span><span class='PDMOper'>,</span><span class='PDMVar'>llFast</span><span class='PDMOper'>,</span><span class='PDMVar'>lcAll</span><span class='PDMOper'>,</span><span class='PDMVar'>llAppend</span><span class='PDMOper'>,</span><span class='PDMVar'>liFSize</span><span class='PDMOper'>,</span><span class='PDMVar'>liModeFile</span><span class='PDMOper'>,</span><span class='PDMVar'>llErr</span>
      <span class='PDMVar'>lihFile</span><span class='PDMOper'>=</span><span class='PDMLit'>0</span>
      <span class='PDMVar'>liData</span><span class='PDMOper'>=</span><span class='PDMResF'>IIF</span><span class='PDMOper'>(</span><span class='PDMResF'>PCOUNT</span><span class='PDMOper'>(</span><span class='PDMOper'>)</span><span class='PDMOper'>&lt;</span><span class='PDMLit'>3</span><span class='PDMOper'>,</span><span class='PDMLit'>512</span><span class='PDMOper'>,</span><span class='PDMVar'>liData</span><span class='PDMOper'>)</span>
      <span class='PDMVar'>liData</span><span class='PDMOper'>=</span><span class='PDMResF'>IIF</span><span class='PDMOper'>(</span><span class='PDMVar'>liData</span><span class='PDMOper'>&lt;=</span><span class='PDMLit'>0</span><span class='PDMOper'>,</span><span class='PDMLit'>512</span><span class='PDMOper'>,</span><span class='PDMVar'>liData</span><span class='PDMOper'>)</span>

      <span class='PDMVar'>liRStart</span><span class='PDMOper'>=</span><span class='PDMResF'>IIF</span><span class='PDMOper'>(</span><span class='PDMResF'>PCOUNT</span><span class='PDMOper'>(</span><span class='PDMOper'>)</span><span class='PDMOper'>&lt;</span><span class='PDMLit'>4</span><span class='PDMOper'>,</span><span class='PDMLit'>0</span><span class='PDMOper'>,</span><span class='PDMVar'>liRStart</span><span class='PDMOper'>)</span>
      <span class='PDMVar'>liLStart</span><span class='PDMOper'>=</span><span class='PDMResF'>IIF</span><span class='PDMOper'>(</span><span class='PDMResF'>PCOUNT</span><span class='PDMOper'>(</span><span class='PDMOper'>)</span><span class='PDMOper'>&lt;</span><span class='PDMLit'>5</span><span class='PDMOper'>,</span><span class='PDMLit'>0</span><span class='PDMOper'>,</span><span class='PDMVar'>liLStart</span><span class='PDMOper'>)</span>
      <span class='PDMVar'>liFlags</span><span class='PDMOper'>=</span><span class='PDMResF'>IIF</span><span class='PDMOper'>(</span><span class='PDMResF'>PCOUNT</span><span class='PDMOper'>(</span><span class='PDMOper'>)</span><span class='PDMOper'>&lt;</span><span class='PDMLit'>6</span><span class='PDMOper'>,</span><span class='PDMVar'>_FTPS_RWF_Resume</span><span class='PDMOper'>+</span><span class='PDMVar'>_FTPS_RWF_File</span><span class='PDMOper'>,</span><span class='PDMVar'>liFlags</span><span class='PDMOper'>)</span>
      <span class='PDMVar'>lnFlag</span><span class='PDMOper'>=</span><span class='PDMResF'>IIF</span><span class='PDMOper'>(</span><span class='PDMResF'>PCOUNT</span><span class='PDMOper'>(</span><span class='PDMOper'>)</span><span class='PDMOper'>&lt;</span><span class='PDMLit'>7</span><span class='PDMOper'>,</span><span class='PDMVar'>FTP_TRANSFER_TYPE_UNKNOWN</span><span class='PDMOper'>,</span><span class='PDMVar'>lnFlag</span><span class='PDMOper'>)</span>

      <span class='PDMVar'>liModeFile</span><span class='PDMOper'>=</span><span class='PDMResF'>IIF</span><span class='PDMOper'>(</span><span class='PDMResF'>TYPE</span><span class='PDMOper'>(</span><span class='PDMStr'>"lnFlag("</span><span class='PDMOper'>+</span><span class='PDMResF'>LTRIM</span><span class='PDMOper'>(</span><span class='PDMResF'>STR</span><span class='PDMOper'>(</span><span class='PDMVar'>_FTPS_FA_ModeFile</span><span class='PDMOper'>,</span><span class='PDMLit'>11</span><span class='PDMOper'>)</span><span class='PDMOper'>)</span><span class='PDMOper'>+</span><span class='PDMStr'>")"</span><span class='PDMOper'>)</span><span class='PDMOper'>=</span><span class='PDMStr'>"N"</span><span class='PDMOper'>,</span><span class='PDMVar'>lnFlag</span><span class='PDMOper'>(</span><span class='PDMVar'>_FTPS_FA_ModeFile</span><span class='PDMOper'>)</span><span class='PDMOper'>,</span><span class='PDMLit'>0</span><span class='PDMOper'>)</span>

      <span class='PDMResK'>IF</span> <span class='PDMOper'>!</span><span class='PDMResF'>BITTEST</span><span class='PDMOper'>(</span><span class='PDMVar'>liFlags</span><span class='PDMOper'>,</span><span class='PDMLit'>0</span><span class='PDMOper'>)</span> <span class='PDMCom'>&amp;&amp; File?</span>
         <span class='PDMVar'>llFast</span><span class='PDMOper'>=</span><span class='PDMResF'>VAL</span><span class='PDMOper'>(</span><span class='PDMResF'>STRTRAN</span><span class='PDMOper'>(</span><span class='PDMResF'>SUBS</span><span class='PDMOper'>(</span><span class='PDMResF'>VERSION</span><span class='PDMOper'>(</span><span class='PDMOper'>)</span><span class='PDMOper'>,</span><span class='PDMResF'>LEN</span><span class='PDMOper'>(</span><span class='PDMStr'>"Visual FoxPro "</span><span class='PDMOper'>)</span><span class='PDMOper'>+</span><span class='PDMLit'>1</span><span class='PDMOper'>,</span><span class='PDMLit'>2</span><span class='PDMOper'>)</span><span class='PDMOper'>,</span><span class='PDMStr'>"0"</span><span class='PDMOper'>,</span><span class='PDMStr'>""</span><span class='PDMOper'>)</span><span class='PDMOper'>)</span><span class='PDMOper'>&gt;</span><span class='PDMLit'>6</span>
         <span class='PDMResK'>IF</span> <span class='PDMOper'>!</span><span class='PDMVar'>llFast</span>
            <span class='PDMVar'>lihFile</span><span class='PDMOper'>=</span><span class='PDMResF'>FOPEN</span><span class='PDMOper'>(</span><span class='PDMVar'>lcData</span><span class='PDMOper'>,</span><span class='PDMLit'>0</span><span class='PDMOper'>)</span>
            <span class='PDMResK'>IF</span> <span class='PDMVar'>lihFile</span><span class='PDMOper'>&lt;=</span><span class='PDMLit'>0</span>
               <span class='PDMResK'>IF</span> <span class='PDMVar'>liModeFile</span><span class='PDMOper'>=</span><span class='PDMVar'>_FTPS_FA_MF_Error</span>
                  <span class='PDMResK'>This</span><span class='PDMOper'>.</span><span class='PDMVar'>SetExtendedError</span><span class='PDMOper'>(</span><span class='PDMVar'>_FTPS_UE_FNEXISTS</span><span class='PDMOper'>,</span><span class='PDMVar'>lcData</span><span class='PDMOper'>)</span>
                  <span class='PDMResK'>RETURN</span> <span class='PDMLit'>.F.</span>
               <span class='PDMResK'>ENDIF</span>
               <span class='PDMVar'>lihFile</span><span class='PDMOper'>=</span><span class='PDMResF'>FCREATE</span><span class='PDMOper'>(</span><span class='PDMVar'>lcData</span><span class='PDMOper'>,</span><span class='PDMLit'>0</span><span class='PDMOper'>)</span>

               <span class='PDMResK'>DO</span> <span class='PDMResK'>CASE</span>
                  <span class='PDMResK'>CASE</span> <span class='PDMVar'>liModeFile</span><span class='PDMOper'>=</span><span class='PDMVar'>_FTPS_FA_MF_New</span> <span class='PDMOper'>OR</span> <span class='PDMResF'>IIF</span><span class='PDMOper'>(</span><span class='PDMResF'>BITTEST</span><span class='PDMOper'>(</span><span class='PDMVar'>liFlags</span><span class='PDMOper'>,</span><span class='PDMLit'>1</span><span class='PDMOper'>)</span><span class='PDMOper'>,</span><span class='PDMVar'>liLStart</span><span class='PDMOper'>,</span><span class='PDMVar'>liRStart</span><span class='PDMOper'>)</span><span class='PDMOper'>=</span><span class='PDMLit'>0</span>

                  <span class='PDMResK'>CASE</span> <span class='PDMVar'>lihFile</span><span class='PDMOper'>&lt;=</span><span class='PDMLit'>0</span>
                       <span class='PDMResK'>This</span><span class='PDMOper'>.</span><span class='PDMVar'>SetExtendedError</span><span class='PDMOper'>(</span><span class='PDMVar'>_FTPS_UE_CCF</span><span class='PDMOper'>,</span><span class='PDMVar'>lcData</span><span class='PDMOper'>)</span>
                       <span class='PDMResK'>RETURN</span> <span class='PDMLit'>.F.</span>

                  <span class='PDMResK'>CASE</span> <span class='PDMVar'>liModeFile</span><span class='PDMOper'>=</span><span class='PDMVar'>_FTPS_FA_MF_Append</span>
                       <span class='PDMResK'>IF</span> <span class='PDMResF'>BITTEST</span><span class='PDMOper'>(</span><span class='PDMVar'>liFlags</span><span class='PDMOper'>,</span><span class='PDMLit'>1</span><span class='PDMOper'>)</span> <span class='PDMCom'>&amp;&amp; rewrite, skip to new position</span>
                          <span class='PDMOper'>=</span><span class='PDMResF'>FCHSIZE</span><span class='PDMOper'>(</span><span class='PDMVar'>lihFile</span><span class='PDMOper'>,</span><span class='PDMVar'>liLStart</span><span class='PDMOper'>+</span><span class='PDMLit'>1</span><span class='PDMOper'>)</span>
                          <span class='PDMOper'>=</span><span class='PDMResF'>FSEEK</span><span class='PDMOper'>(</span><span class='PDMVar'>lihFile</span><span class='PDMOper'>,</span><span class='PDMVar'>liLStart</span><span class='PDMOper'>,</span><span class='PDMLit'>0</span><span class='PDMOper'>)</span>
                       <span class='PDMResK'>ELSE</span>
                          <span class='PDMOper'>=</span><span class='PDMResF'>FCHSIZE</span><span class='PDMOper'>(</span><span class='PDMVar'>lihFile</span><span class='PDMOper'>,</span><span class='PDMVar'>liRStart</span><span class='PDMOper'>+</span><span class='PDMLit'>1</span><span class='PDMOper'>)</span>
                          <span class='PDMOper'>=</span><span class='PDMResF'>FSEEK</span><span class='PDMOper'>(</span><span class='PDMVar'>lihFile</span><span class='PDMOper'>,</span><span class='PDMVar'>liRStart</span><span class='PDMOper'>,</span><span class='PDMLit'>0</span><span class='PDMOper'>)</span> <span class='PDMCom'>&amp;&amp; resume native mode</span>
                       <span class='PDMResK'>ENDIF</span>


               <span class='PDMResK'>ENDCASE</span>

            <span class='PDMResK'>ELSE</span>
               <span class='PDMResK'>IF</span> <span class='PDMVar'>lihFile</span><span class='PDMOper'>&lt;=</span><span class='PDMLit'>0</span>
                  <span class='PDMResK'>This</span><span class='PDMOper'>.</span><span class='PDMVar'>SetExtendedError</span><span class='PDMOper'>(</span><span class='PDMVar'>_FTPS_UE_COF</span><span class='PDMOper'>,</span><span class='PDMVar'>lcData</span><span class='PDMOper'>)</span>
                  <span class='PDMResK'>RETURN</span> <span class='PDMLit'>.F.</span>
               <span class='PDMResK'>ENDIF</span>

               <span class='PDMOper'>=</span><span class='PDMResF'>IIF</span><span class='PDMOper'>(</span><span class='PDMResF'>BITTEST</span><span class='PDMOper'>(</span><span class='PDMVar'>liFlags</span><span class='PDMOper'>,</span><span class='PDMLit'>1</span><span class='PDMOper'>)</span><span class='PDMOper'>,</span><span class='PDMOper'>;</span> <span class='PDMCom'>&amp;&amp; rewrite, skip to new position</span>
                    <span class='PDMResF'>FSEEK</span><span class='PDMOper'>(</span><span class='PDMVar'>lihFile</span><span class='PDMOper'>,</span><span class='PDMVar'>liLStart</span><span class='PDMOper'>,</span><span class='PDMLit'>0</span><span class='PDMOper'>)</span><span class='PDMOper'>,</span><span class='PDMOper'>;</span>
                    <span class='PDMResF'>FSEEK</span><span class='PDMOper'>(</span><span class='PDMVar'>lihFile</span><span class='PDMOper'>,</span><span class='PDMVar'>liRStart</span><span class='PDMOper'>,</span><span class='PDMLit'>0</span><span class='PDMOper'>)</span><span class='PDMOper'>)</span> <span class='PDMCom'>&amp;&amp; resume native mode</span>
            <span class='PDMResK'>ENDIF</span>
         <span class='PDMResK'>ELSE</span>
            <span class='PDMResK'>IF</span> <span class='PDMResF'>LEN</span><span class='PDMOper'>(</span><span class='PDMResF'>SYS</span><span class='PDMOper'>(</span><span class='PDMLit'>2000</span><span class='PDMOper'>,</span><span class='PDMVar'>lcData</span><span class='PDMOper'>)</span><span class='PDMOper'>)</span><span class='PDMOper'>=</span><span class='PDMLit'>0</span> <span class='PDMCom'>&amp;&amp; local file not exist</span>
               <span class='PDMResK'>DO</span> <span class='PDMResK'>CASE</span>
                  <span class='PDMResK'>CASE</span> <span class='PDMVar'>liModeFile</span><span class='PDMOper'>=</span><span class='PDMVar'>_FTPS_FA_MF_New</span> <span class='PDMOper'>OR</span> <span class='PDMResF'>IIF</span><span class='PDMOper'>(</span><span class='PDMResF'>BITTEST</span><span class='PDMOper'>(</span><span class='PDMVar'>liFlags</span><span class='PDMOper'>,</span><span class='PDMLit'>1</span><span class='PDMOper'>)</span><span class='PDMOper'>,</span><span class='PDMVar'>liLStart</span><span class='PDMOper'>,</span><span class='PDMVar'>liRStart</span><span class='PDMOper'>)</span><span class='PDMOper'>=</span><span class='PDMLit'>0</span>
                       <span class='PDMVar'>lcAll</span><span class='PDMOper'>=</span><span class='PDMStr'>""</span>

                  <span class='PDMResK'>CASE</span> <span class='PDMVar'>liModeFile</span><span class='PDMOper'>=</span><span class='PDMVar'>_FTPS_FA_MF_Error</span>
                       <span class='PDMResK'>This</span><span class='PDMOper'>.</span><span class='PDMVar'>SetExtendedError</span><span class='PDMOper'>(</span><span class='PDMVar'>_FTPS_UE_FNEXISTS</span><span class='PDMOper'>,</span><span class='PDMVar'>lcData</span><span class='PDMOper'>)</span>
                       <span class='PDMResK'>RETURN</span> <span class='PDMLit'>.F.</span>

                  <span class='PDMResK'>CASE</span> <span class='PDMVar'>liModeFile</span><span class='PDMOper'>=</span><span class='PDMVar'>_FTPS_FA_MF_Append</span>
                       <span class='PDMVar'>lcAll</span><span class='PDMOper'>=</span><span class='PDMResF'>IIF</span><span class='PDMOper'>(</span><span class='PDMResF'>BITTEST</span><span class='PDMOper'>(</span><span class='PDMVar'>liFlags</span><span class='PDMOper'>,</span><span class='PDMLit'>1</span><span class='PDMOper'>)</span><span class='PDMOper'>,</span><span class='PDMOper'>;</span> <span class='PDMCom'>&amp;&amp; rewrite, skip to new position</span>
                                 <span class='PDMResF'>REPL</span><span class='PDMOper'>(</span><span class='PDMResF'>CHR</span><span class='PDMOper'>(</span><span class='PDMLit'>0</span><span class='PDMOper'>)</span><span class='PDMOper'>,</span><span class='PDMVar'>liLStart</span><span class='PDMOper'>)</span><span class='PDMOper'>,</span><span class='PDMResF'>REPL</span><span class='PDMOper'>(</span><span class='PDMResF'>CHR</span><span class='PDMOper'>(</span><span class='PDMLit'>0</span><span class='PDMOper'>)</span><span class='PDMOper'>,</span><span class='PDMVar'>liRStart</span><span class='PDMOper'>)</span><span class='PDMOper'>)</span>

                  <span class='PDMResK'>OTHERWISE</span>

               <span class='PDMResK'>ENDCASE</span>

            <span class='PDMResK'>ELSE</span>
               <span class='PDMVar'>lcAll</span><span class='PDMOper'>=</span><span class='PDMResF'>FILETOSTR</span><span class='PDMOper'>(</span><span class='PDMVar'>lcData</span><span class='PDMOper'>)</span>
               <span class='PDMVar'>lcAll</span><span class='PDMOper'>=</span><span class='PDMResF'>IIF</span><span class='PDMOper'>(</span><span class='PDMResF'>BITTEST</span><span class='PDMOper'>(</span><span class='PDMVar'>liFlags</span><span class='PDMOper'>,</span><span class='PDMLit'>1</span><span class='PDMOper'>)</span><span class='PDMOper'>,</span><span class='PDMOper'>;</span> <span class='PDMCom'>&amp;&amp; rewrite, skip to new position</span>
                         <span class='PDMResF'>LEFT</span><span class='PDMOper'>(</span><span class='PDMVar'>lcAll</span><span class='PDMOper'>,</span><span class='PDMVar'>liLStart</span><span class='PDMOper'>)</span><span class='PDMOper'>,</span><span class='PDMResF'>LEFT</span><span class='PDMOper'>(</span><span class='PDMVar'>lcAll</span><span class='PDMOper'>,</span><span class='PDMVar'>liRStart</span><span class='PDMOper'>)</span><span class='PDMOper'>)</span>
            <span class='PDMResK'>ENDIF</span>


         <span class='PDMResK'>ENDIF</span>
      <span class='PDMResK'>ELSE</span>
         <span class='PDMResK'>IF</span> <span class='PDMResF'>TYPE</span><span class='PDMOper'>(</span><span class='PDMStr'>"lcData"</span><span class='PDMOper'>)</span><span class='PDMOper'>#</span><span class='PDMStr'>"C"</span>
            <span class='PDMResK'>This</span><span class='PDMOper'>.</span><span class='PDMVar'>SetExtendedError</span><span class='PDMOper'>(</span><span class='PDMLit'>11</span><span class='PDMOper'>,</span><span class='PDMStr'>"Function argument value, type, or count is invalid."</span><span class='PDMOper'>)</span>
            <span class='PDMResK'>RETURN</span> <span class='PDMLit'>.F.</span>
         <span class='PDMResK'>ENDIF</span>
         <span class='PDMVar'>lcData</span><span class='PDMOper'>=</span><span class='PDMResF'>IIF</span><span class='PDMOper'>(</span><span class='PDMResF'>BITTEST</span><span class='PDMOper'>(</span><span class='PDMVar'>liFlags</span><span class='PDMOper'>,</span><span class='PDMLit'>1</span><span class='PDMOper'>)</span><span class='PDMOper'>,</span><span class='PDMOper'>;</span> <span class='PDMCom'>&amp;&amp; rewrite, skip to new position</span>
                    <span class='PDMResF'>LEFT</span><span class='PDMOper'>(</span><span class='PDMVar'>lcData</span><span class='PDMOper'>,</span><span class='PDMVar'>liLStart</span><span class='PDMOper'>)</span><span class='PDMOper'>,</span><span class='PDMResF'>LEFT</span><span class='PDMOper'>(</span><span class='PDMVar'>lcData</span><span class='PDMOper'>,</span><span class='PDMVar'>liRStart</span><span class='PDMOper'>)</span><span class='PDMOper'>)</span>
         <span class='PDMVar'>llFast</span><span class='PDMOper'>=</span><span class='PDMLit'>.T.</span>
      <span class='PDMResK'>ENDIF</span>

      <span class='PDMResK'>IF</span> <span class='PDMResK'>This</span><span class='PDMOper'>.</span><span class='PDMVar'>OpenFTPConnection</span><span class='PDMOper'>(</span><span class='PDMResK'>This</span><span class='PDMOper'>.</span><span class='PDMVar'>cCurrentDir</span><span class='PDMOper'>)</span> <span class='PDMCom'>&amp;&amp; Open an FTP Handle</span>
         <span class='PDMVar'>lcRemoteFile</span> <span class='PDMOper'>=</span> <span class='PDMVar'>lcRemoteFile</span> <span class='PDMOper'>+</span> <span class='PDMVar'>cNULL</span>

         <span class='PDMOper'>=</span><span class='PDMResK'>This</span><span class='PDMOper'>.</span><span class='PDMVar'>BeforeReadFTPFile</span><span class='PDMOper'>(</span><span class='PDMOper'>@</span><span class='PDMVar'>lcRemoteFile</span><span class='PDMOper'>,</span> <span class='PDMOper'>@</span><span class='PDMVar'>lcData</span><span class='PDMOper'>,</span><span class='PDMVar'>liData</span><span class='PDMOper'>,</span><span class='PDMVar'>liRStart</span><span class='PDMOper'>,</span><span class='PDMVar'>liLStart</span><span class='PDMOper'>,</span><span class='PDMVar'>liFlags</span><span class='PDMOper'>,</span><span class='PDMVar'>lnFlag</span><span class='PDMOper'>)</span>
         <span class='PDMResK'>IF</span> <span class='PDMVar'>liRStart</span><span class='PDMOper'>&gt;</span><span class='PDMLit'>0</span> <span class='PDMCom'>&amp;&amp; Part data</span>
            <span class='PDMOper'>=</span><span class='PDMResK'>This</span><span class='PDMOper'>.</span><span class='PDMVar'>FTPCommand</span><span class='PDMOper'>(</span><span class='PDMStr'>"REST "</span><span class='PDMOper'>+</span><span class='PDMResF'>LTRIM</span><span class='PDMOper'>(</span><span class='PDMResF'>STR</span><span class='PDMOper'>(</span><span class='PDMVar'>liRStart</span><span class='PDMOper'>,</span><span class='PDMLit'>11</span><span class='PDMOper'>)</span><span class='PDMOper'>)</span><span class='PDMOper'>,</span> <span class='PDMVar'>FTP_TRANSFER_TYPE_BINARY</span><span class='PDMOper'>,</span><span class='PDMLit'>0</span><span class='PDMOper'>,</span><span class='PDMOper'>.</span><span class='PDMResK'>NULL</span><span class='PDMOper'>.</span><span class='PDMOper'>)</span>
         <span class='PDMResK'>ENDIF</span>

         <span class='PDMResK'>STORE</span> <span class='PDMVar'>FtpOpenFile</span><span class='PDMOper'>(</span><span class='PDMResK'>This</span><span class='PDMOper'>.</span><span class='PDMVar'>nConnect_Handle</span><span class='PDMOper'>,</span> <span class='PDMOper'>@</span><span class='PDMVar'>lcRemoteFile</span><span class='PDMOper'>,</span> <span class='PDMVar'>GENERIC_READ</span><span class='PDMOper'>,</span> <span class='PDMOper'>;</span>
                           <span class='PDMResF'>BITOR</span><span class='PDMOper'>(</span><span class='PDMResK'>This</span><span class='PDMOper'>.</span><span class='PDMVar'>nCachingType</span><span class='PDMOper'>,</span><span class='PDMVar'>lnFlag</span><span class='PDMOper'>)</span><span class='PDMOper'>,</span> <span class='PDMLit'>0</span><span class='PDMOper'>)</span> <span class='PDMResK'>TO</span> <span class='PDMVar'>fResult</span><span class='PDMOper'>,</span><span class='PDMVar'>lihFTP</span>
         <span class='PDMOper'>=</span><span class='PDMResK'>This</span><span class='PDMOper'>.</span><span class='PDMVar'>GetExtendedError</span><span class='PDMOper'>(</span><span class='PDMOper'>)</span>

         <span class='PDMResK'>IF</span> <span class='PDMVar'>fResult</span> <span class='PDMOper'>#</span><span class='PDMLit'>0</span> <span class='PDMCom'>&amp;&amp; OK, FTP file is openned</span>
            <span class='PDMVar'>lii</span><span class='PDMOper'>=</span><span class='PDMLit'>0</span>
            <span class='PDMResK'>STORE</span> <span class='PDMLit'>1</span> <span class='PDMResK'>TO</span> <span class='PDMVar'>fResult</span><span class='PDMOper'>,</span><span class='PDMVar'>liRead</span>

            <span class='PDMResK'>DO</span> <span class='PDMResK'>WHILE</span> <span class='PDMVar'>liRead</span><span class='PDMOper'>&gt;</span><span class='PDMLit'>0</span>
               <span class='PDMVar'>liRead</span><span class='PDMOper'>=</span><span class='PDMLit'>0</span>
               <span class='PDMVar'>lcBuffer</span><span class='PDMOper'>=</span><span class='PDMResF'>SPACE</span><span class='PDMOper'>(</span><span class='PDMVar'>liData</span><span class='PDMOper'>)</span>
               <span class='PDMVar'>fResult</span> <span class='PDMOper'>=</span> <span class='PDMVar'>InternetReadFile</span><span class='PDMOper'>(</span><span class='PDMVar'>lihFTP</span><span class='PDMOper'>,</span> <span class='PDMOper'>@</span><span class='PDMVar'>lcBuffer</span><span class='PDMOper'>,</span> <span class='PDMVar'>liData</span><span class='PDMOper'>,</span> <span class='PDMOper'>@</span><span class='PDMVar'>liRead</span><span class='PDMOper'>)</span>
               <span class='PDMOper'>=</span><span class='PDMResK'>This</span><span class='PDMOper'>.</span><span class='PDMVar'>GetExtendedError</span><span class='PDMOper'>(</span><span class='PDMOper'>)</span>
               <span class='PDMOper'>=</span><span class='PDMResK'>This</span><span class='PDMOper'>.</span><span class='PDMVar'>AtReadFTPFile</span><span class='PDMOper'>(</span><span class='PDMOper'>@</span><span class='PDMVar'>lcRemoteFile</span><span class='PDMOper'>,</span> <span class='PDMOper'>@</span><span class='PDMVar'>lcData</span><span class='PDMOper'>,</span><span class='PDMVar'>liData</span><span class='PDMOper'>,</span><span class='PDMVar'>liRStart</span><span class='PDMOper'>,</span><span class='PDMVar'>liLStart</span><span class='PDMOper'>,</span><span class='PDMVar'>liFlags</span><span class='PDMOper'>,</span><span class='PDMVar'>lnFlag</span><span class='PDMOper'>,</span><span class='PDMOper'>@</span><span class='PDMVar'>lcBuffer</span><span class='PDMOper'>,</span><span class='PDMVar'>fResult</span><span class='PDMOper'>)</span>

               <span class='PDMResK'>IF</span> <span class='PDMOper'>!</span><span class='PDMResF'>BITTEST</span><span class='PDMOper'>(</span><span class='PDMVar'>liFlags</span><span class='PDMOper'>,</span><span class='PDMLit'>0</span><span class='PDMOper'>)</span> <span class='PDMCom'>&amp;&amp; File?</span>
                  <span class='PDMResK'>IF</span> <span class='PDMVar'>llFast</span> <span class='PDMOper'>AND</span> <span class='PDMVar'>liRead</span><span class='PDMOper'>&gt;</span><span class='PDMLit'>0</span>
                     <span class='PDMResK'>IF</span> <span class='PDMResF'>LEN</span><span class='PDMOper'>(</span><span class='PDMVar'>lcAll</span><span class='PDMOper'>)</span><span class='PDMOper'>+</span><span class='PDMVar'>liRead</span><span class='PDMOper'>&gt;</span><span class='PDMVar'>_FTPS_MaxFileSize</span>
                        <span class='PDMResK'>IF</span> <span class='PDMResF'>STRTOFILE</span><span class='PDMOper'>(</span><span class='PDMVar'>lcAll</span><span class='PDMOper'>,</span><span class='PDMVar'>lcData</span><span class='PDMOper'>,</span><span class='PDMVar'>llAppend</span><span class='PDMOper'>)</span><span class='PDMOper'>=</span><span class='PDMLit'>0</span>
                           <span class='PDMResK'>This</span><span class='PDMOper'>.</span><span class='PDMVar'>SetExtendedError</span><span class='PDMOper'>(</span><span class='PDMVar'>_FTPS_UE_CWF</span><span class='PDMOper'>,</span><span class='PDMStr'>""</span><span class='PDMOper'>)</span>
                           <span class='PDMVar'>fResult</span><span class='PDMOper'>=</span><span class='PDMLit'>0</span>
                           <span class='PDMResK'>EXIT</span>
                        <span class='PDMResK'>ENDIF</span>
                        <span class='PDMVar'>llAppend</span><span class='PDMOper'>=</span><span class='PDMLit'>.T.</span>
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -