三、获得要更新的文件数
(只是处理二级目录)
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
