完整代码 idftp上床程序procedure TForm1.Button1Click(Sender: TObject); var Ini: TIniFile; NewVersion,Newfiles,Version :string ; NewFile :array[0..3] of string; i:integer; begin //=============== get oldVersion begin ========= Ini :=TInifile.Create(ExtractFilePath(Paramstr(0))+'update.ini'); //必须那么写。不然不成功失败的郁闷 try idFTPSun.Host:=Ini.ReadString( 'data', 'host', '127.0.0.1' ); idFTPSun.Username:=Ini.ReadString( 'data', 'Username', 'anonymous' ); idFTPSun.Password:=Ini.ReadString( 'data', 'Password', '' ); Newfiles := Ini.ReadString( 'data', 'file','222' ); finally Ini.Free; end; //==================== get new Version end ================== try idFTPSun.Connect(true,10000); except showmessage('连接主机失败!检查网络'); ShellExecute(handle,'open',Pchar(NewFiles),nil,nil, SW_SHOWNORMAL); end; idFTPSun.ChangeDir('/update'); idFTPSun.Get('update.ini','temp.ini',true,false); pb.Position:=10;//进度控制 //==================== ger new Version begin===================== //Ini := TIniFile.Create( 'E:\002.个人文件\ftp自动更新程序\update21.ini' );//必须那么写。不然不成功失败的郁闷 Ini :=TInifile.Create(ExtractFilePath(Paramstr(0))+'temp.ini'); //必须那么写。不然不成功失败的郁闷 try NewVersion := Ini.ReadString( 'data', 'Version', '123' ); Newfiles := Ini.ReadString( 'data', 'file','222' );
NewFile[0] :=Ini.ReadString( 'data', 'file0','222' ); NewFile[1] :=Ini.ReadString( 'data', 'file1','222' ); NewFile[2] :=Ini.ReadString( 'data', 'file2','222' ); NewFile[3] :=Ini.ReadString( 'data', 'file3','222' ); finally Ini.Free; deleteFile('temp.ini'); end; //==================== get new Version end ============== pb.Position:=pb.Position+10;//进度控制 //=============== get oldVersion begin ========= Ini :=TInifile.Create(ExtractFilePath(Paramstr(0))+'update.ini'); //必须那么写。不然不成功失败的郁闷 label1.Caption:=Ini.FileName; try Version := Ini.ReadString( 'data', 'Version', '123' ); finally Ini.Free; end; //==================== get new Version end ================== pb.Position:=pb.Position+10;//进度控制 //=================== compare the files and download begin======================= if Version=NewVersion then begin showmessage('新版本号=>'+NewVersion+#13+Newfiles+#13+'旧版本号=>'+Version); idFTPSun.Get(Newfiles,Newfiles,true,false); for i:=0 to 3 do begin if length(NewFile[i])>1 then idFTPSun.Get(NewFile[i],NewFile[i],true,false); pb.Position:=pb.Position+5; label1.Caption:= NewFile[i]; end; label1.Caption:='新版本号=>'+NewVersion+#13+Newfiles+#13+'旧版本号=>'+Version+idFTPSun.RetrieveCurrentDir; idFTPSun.Get('update.ini','update.ini',true,false); label1.Caption:='更新成功,程序正常启动'; end else begin label1.Caption:='更新成功,程序正常启动'; end; //=================== compare the files download end========= pb.Position:=pb.Position+10;//进度控制 pb.Position:=100;//进度控制 idFTPSun.Abort; //断开连接 idFTPSun.Quit; //退出连接//========================================启动 ShellExecute(handle,'open',Pchar(NewFiles),nil,nil, SW_SHOWNORMAL); application.Terminate; //========================================= end;==长的帅没用==
谢谢blastodermx(柏拉图的迷茫) ,你提供的方法可行,但是为何老报 “xx access is denied”错误,xx是要上传的文件名,我用的是xp+delphi6系统, 我昨天自己弄了一个也是老报这个错误。
你可以看看这个。
var
Ini: TIniFile;
NewVersion,Newfiles,Version :string ;
NewFile :array[0..3] of string;
i:integer;
begin
//=============== get oldVersion begin ========= Ini :=TInifile.Create(ExtractFilePath(Paramstr(0))+'update.ini'); //必须那么写。不然不成功失败的郁闷
try
idFTPSun.Host:=Ini.ReadString( 'data', 'host', '127.0.0.1' );
idFTPSun.Username:=Ini.ReadString( 'data', 'Username', 'anonymous' );
idFTPSun.Password:=Ini.ReadString( 'data', 'Password', '' );
Newfiles := Ini.ReadString( 'data', 'file','222' );
finally
Ini.Free;
end;
//==================== get new Version end ==================
try
idFTPSun.Connect(true,10000);
except
showmessage('连接主机失败!检查网络');
ShellExecute(handle,'open',Pchar(NewFiles),nil,nil, SW_SHOWNORMAL);
end;
idFTPSun.ChangeDir('/update');
idFTPSun.Get('update.ini','temp.ini',true,false);
pb.Position:=10;//进度控制
//==================== ger new Version begin=====================
//Ini := TIniFile.Create( 'E:\002.个人文件\ftp自动更新程序\update21.ini' );//必须那么写。不然不成功失败的郁闷
Ini :=TInifile.Create(ExtractFilePath(Paramstr(0))+'temp.ini'); //必须那么写。不然不成功失败的郁闷 try
NewVersion := Ini.ReadString( 'data', 'Version', '123' );
Newfiles := Ini.ReadString( 'data', 'file','222' );
NewFile[0] :=Ini.ReadString( 'data', 'file0','222' );
NewFile[1] :=Ini.ReadString( 'data', 'file1','222' );
NewFile[2] :=Ini.ReadString( 'data', 'file2','222' );
NewFile[3] :=Ini.ReadString( 'data', 'file3','222' );
finally
Ini.Free;
deleteFile('temp.ini');
end;
//==================== get new Version end ==============
pb.Position:=pb.Position+10;//进度控制
//=============== get oldVersion begin ========= Ini :=TInifile.Create(ExtractFilePath(Paramstr(0))+'update.ini'); //必须那么写。不然不成功失败的郁闷
label1.Caption:=Ini.FileName;
try
Version := Ini.ReadString( 'data', 'Version', '123' );
finally
Ini.Free;
end;
//==================== get new Version end ==================
pb.Position:=pb.Position+10;//进度控制
//=================== compare the files and download begin=======================
if Version=NewVersion then
begin
showmessage('新版本号=>'+NewVersion+#13+Newfiles+#13+'旧版本号=>'+Version); idFTPSun.Get(Newfiles,Newfiles,true,false);
for i:=0 to 3 do
begin
if length(NewFile[i])>1 then
idFTPSun.Get(NewFile[i],NewFile[i],true,false);
pb.Position:=pb.Position+5;
label1.Caption:= NewFile[i];
end;
label1.Caption:='新版本号=>'+NewVersion+#13+Newfiles+#13+'旧版本号=>'+Version+idFTPSun.RetrieveCurrentDir;
idFTPSun.Get('update.ini','update.ini',true,false);
label1.Caption:='更新成功,程序正常启动';
end
else
begin label1.Caption:='更新成功,程序正常启动';
end;
//=================== compare the files download end=========
pb.Position:=pb.Position+10;//进度控制
pb.Position:=100;//进度控制
idFTPSun.Abort; //断开连接
idFTPSun.Quit; //退出连接//========================================启动
ShellExecute(handle,'open',Pchar(NewFiles),nil,nil, SW_SHOWNORMAL); application.Terminate;
//=========================================
end;==长的帅没用==
“xx access is denied”错误,xx是要上传的文件名,我用的是xp+delphi6系统,
我昨天自己弄了一个也是老报这个错误。