数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
PB使用WININET的FTP方式自动更新(三、获得要更新的文件数)

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

三、获得要更新的文件数
(只是处理二级目录)
global type f_connect_ftpcount from function_object
end type

forward prototypes
global function integer f_connect_ftpcount ()
end prototypes

global function integer f_connect_ftpcount ();
do while yield()
loop

string ls_directorya1,ls_directorya2

ls_directorya2 = gs_application_path

string ls_directoryb1,ls_directoryb2
string ls_filename1,ls_filename2

long ll_hret
long ll_hftp1
long ll_hftp2
long ll_fftp1
long ll_fftp2
integer li_ret
long ll_filehandle1,ll_filehandle2
long ll_k

boolean lb_success

s_WIN32_FIND_DATA ss_file1,ss_file2

li_ret = f_connect_ftpserver()
if li_ret = -1 then return -1

ll_hret = InternetOpenA(gs_application_name,0,'','',0)
choose case li_ret
 case 1
  ls_directorya1 = GS_FTPDIR1
  ll_hftp1 = InternetConnectA(ll_hret,GS_FTPSERVER1,GL_FTPLOGINPORT1,GS_FTPLOGINUSER1,GS_FTPLOGINPASS1,1,0,0)
 case 2
  ls_directorya1 = GS_FTPDIR2
  ll_hftp1 = InternetConnectA(ll_hret,GS_FTPSERVER2,GL_FTPLOGINPORT2,GS_FTPLOGINUSER2,GS_FTPLOGINPASS2,1,0,0)
 case 3
  ls_directorya1 = GS_FTPDIR3
  ll_hftp1 = InternetConnectA(ll_hret,GS_FTPSERVER3,GL_FTPLOGINPORT3,GS_FTPLOGINUSER3,GS_FTPLOGINPASS3,1,0,0)
 case else
  InternetCloseHandle(ll_hret);
  return -1
end choose
lb_success = FtpSetCurrentDirectoryA(ll_hftp1,ls_directorya1)
if not lb_success then
 InternetCloseHandle(ll_hret);
 InternetCloseHandle(ll_hftp1);
 return -1
end IF
ll_fftp1 = FtpFindFirstFileA(ll_hftp1,'',ss_file1,0,0)
if ll_fftp1 = 0 then
 InternetCloseHandle(ll_hret);
 InternetCloseHandle(ll_hftp1);
 InternetCloseHandle(ll_fftp1);
 return 0
end if
ll_k = 0
if ss_file1.dwFileAttributes = 16 then
 ls_directoryb1 = ls_directorya1 + '/' + ss_file1.cfilename
 ls_directoryb2 = ls_directorya2 + '\' + ss_file1.cfilename
 if directoryexists(ls_directoryb2) = false then
  ll_k++
 end if
 choose case li_ret
  case 1
   ll_hftp2 = InternetConnectA(ll_hret,GS_FTPSERVER1,GL_FTPLOGINPORT1,GS_FTPLOGINUSER1,GS_FTPLOGINPASS1,1,0,0)
  case 2
   ll_hftp2 = InternetConnectA(ll_hret,GS_FTPSERVER2,GL_FTPLOGINPORT2,GS_FTPLOGINUSER2,GS_FTPLOGINPASS2,1,0,0)
  case 3
   ll_hftp2 = InternetConnectA(ll_hret,GS_FTPSERVER3,GL_FTPLOGINPORT3,GS_FTPLOGINUSER3,GS_FTPLOGINPASS3,1,0,0)
 end choose
 lb_success = FtpSetCurrentDirectoryA(ll_hftp2,ls_directoryb1)
 if lb_success  then
  ll_fftp2 = FtpFindFirstFileA(ll_hftp2,'',ss_file1,0,0)
  ls_filename2 = ls_directoryb2 + '\' + ss_file1.cfilename
  if fileexists(ls_filename2) = false then
   ll_k++
  else
   ll_filehandle2 = FindFirstFileA(ls_filename2,ss_file2)
   FindClose(ll_filehandle2)
   choose case CompareFileTime(ss_file1.ftlastwritetime,ss_file2.ftlastwritetime)
    case 0
     //两个时间相等,就返回零
    case 1
     //如lpFileTime2小于lpFileTime1,返回1
     //下载
     ll_k++
    case -1
     //如lpFileTime1小于lpFileTime2,返回-1
   end choose
  end if
  do while InternetFindnextFileA(ll_fftp2, ss_file1)
   yield()
   ls_filename2 = ls_directoryb2 + '\' + ss_file1.cfilename
   if fileexists(ls_filename2) = false then
    ll_k++
   else
    ll_filehandle2 = FindFirstFileA(ls_filename2,ss_file2)
    FindClose(ll_filehandle2)
    choose case CompareFileTime(ss_file1.ftlastwritetime,ss_file2.ftlastwritetime)
     case 0
      //两个时间相等,就返回零
     case 1
      //如lpFileTime2小于lpFileTime1,返回1
      //下载
      ll_k++
     case -1
      //如lpFileTime1小于lpFileTime2,返回-1
    end choose
   end if
  loop
  InternetCloseHandle(ll_hftp2);
  InternetCloseHandle(ll_fftp2);
 end if
else
 ls_filename2 = ls_directorya2 + '\' + ss_file1.cfilename
 if fileexists(ls_filename2) = false then
  ll_k++
 else
  ll_filehandle2 = FindFirstFileA(ls_filename2,ss_file2)
  FindClose(ll_filehandle2)
  choose case CompareFileTime(ss_file1.ftlastwritetime,ss_file2.ftlastwritetime)
   case 0
    //两个时间相等,就返回零
   case 1
    //如lpFileTime2小于lpFileTime1,返回1
    //下载
    ll_k++
   case -1
    //如lpFileTime1小于lpFileTime2,返回-1
  end choose
 end if
end if
do while InternetFindnextFileA(ll_fftp1, ss_file1)
 yield()
 if ss_file1.dwFileAttributes = 16 then
  ls_directoryb1 = ls_directorya1 + '/' + ss_file1.cfilename
  ls_directoryb2 = ls_directorya2 + '\' + ss_file1.cfilename
  if directoryexists(ls_directoryb2) = false then
   ll_k++
  end if
  choose case li_ret
   case 1
    ll_hftp2 = InternetConnectA(ll_hret,GS_FTPSERVER1,GL_FTPLOGINPORT1,GS_FTPLOGINUSER1,GS_FTPLOGINPASS1,1,0,0)
   case 2
    ll_hftp2 = InternetConnectA(ll_hret,GS_FTPSERVER2,GL_FTPLOGINPORT2,GS_FTPLOGINUSER2,GS_FTPLOGINPASS2,1,0,0)
   case 3
    ll_hftp2 = InternetConnectA(ll_hret,GS_FTPSERVER3,GL_FTPLOGINPORT3,GS_FTPLOGINUSER3,GS_FTPLOGINPASS3,1,0,0)
  end choose
  lb_success = FtpSetCurrentDirectoryA(ll_hftp2,ls_directoryb1)
  if lb_success then
   ll_fftp2 = FtpFindFirstFileA(ll_hftp2,'',ss_file1,0,0)
   ls_filename2 = ls_directoryb2 + '\' + ss_file1.cfilename
   if fileexists(ls_filename2) = false then
    ll_k++
   else
    ll_filehandle2 = FindFirstFileA(ls_filename2,ss_file2)
    FindClose(ll_filehandle2)
    choose case CompareFileTime(ss_file1.ftlastwritetime,ss_file2.ftlastwritetime)
     case 0
      //两个时间相等,就返回零
     case 1
      //如lpFileTime2小于lpFileTime1,返回1
      //下载
      ll_k++
     case -1
      //如lpFileTime1小于lpFileTime2,返回-1
    end choose
   end if
   do while InternetFindnextFileA(ll_fftp2, ss_file1)
    yield()
    ls_filename2 = ls_directoryb2 + '\' + ss_file1.cfilename
    if fileexists(ls_filename2) = false then
     ll_k++
    else
     ll_filehandle2 = FindFirstFileA(ls_filename2,ss_file2)
     FindClose(ll_filehandle2)
     choose case CompareFileTime(ss_file1.ftlastwritetime,ss_file2.ftlastwritetime)
      case 0
       //两个时间相等,就返回零
      case 1
       //如lpFileTime2小于lpFileTime1,返回1
       //下载
       ll_k++
      case -1
       //如lpFileTime1小于lpFileTime2,返回-1
     end choose
    end if
   loop
   InternetCloseHandle(ll_hftp2);
   InternetCloseHandle(ll_fftp2);
  end if
 else
  ls_filename2 = ls_directorya2 + '\' + ss_file1.cfilename
  if fileexists(ls_filename2) = false then
   ll_k++
  else
   ll_filehandle2 = FindFirstFileA(ls_filename2,ss_file2)
   FindClose(ll_filehandle2)
   choose case CompareFileTime(ss_file1.ftlastwritetime,ss_file2.ftlastwritetime)
    case 0
     //两个时间相等,就返回零
    case 1
     //如lpFileTime2小于lpFileTime1,返回1
     //下载
     ll_k++
    case -1
     //如lpFileTime1小于lpFileTime2,返回-1
   end choose
  end if
 end if
loop
InternetCloseHandle(ll_hret);
InternetCloseHandle(ll_hftp1);
InternetCloseHandle(ll_fftp1);
return ll_k

end function

 




相关文章

相关软件