📄 fftp.pas
字号:
else if ftpList.SelectedDirectories.Count > 1 then
SetTextBuf(PChar(FTP.URL + ftpList.SelectedFiles[0]));
finally
Free;
end;
end;
procedure TfrmFTP.LoadItems;
var
SRec : TSearchRec;
b: Boolean;
begin
cmbAccounts.Clear;
b:=(FindFirst(ExtractFilePath(Application.ExeName) + 'accounts\*.ftp',faAnyFile, SRec)=0);
while b do begin
cmbAccounts.Items.Add(SRec.Name);
b:=(FindNext(sRec)=0);
end;
end;
procedure TfrmFTP.PopupMenu1Popup(Sender: TObject);
begin
CopyLocation1.Enabled := (ftpList.SelCount > 0);
end;
procedure TfrmFTP.btnAccountsClick(Sender: TObject);
var
i: Integer;
begin
frmAccount := TfrmAccount.Create(nil);
ftp.TransferMode := TMFTPTransferType(0);
frmAccount.ShowModal;
i := cmbAccounts.ItemIndex;
LoadItems;
if frmQuickFTP <> nil then frmQuickFTP.LoadItems;
cmbAccounts.ItemIndex := i;
end;
procedure TfrmFTP.btnConnectClick(Sender: TObject);
var
ini: TIniFile;
begin
ftp.Disconnect;
ini := TInifile.Create(ExtractFilePath(Application.ExeName) + 'accounts\' + cmbAccounts.Text);
ftp.Server := ini.Readstring('FTP', 'URL', '');
ftp.username := ini.Readstring('FTP', 'Username', '');
ftp.Password := ini.Readstring('FTP', 'Password', '');
ftp.Port := ini.ReadInteger('FTP', 'Port', 0);
ftp.ServerType := TMFTPServerType(ini.ReadInteger('FTP', 'ServerType', 0));
ftp.TransferMode := TMFTPTransferType(ini.ReadInteger('FTP', 'TransferType', 0));
ftp.InitialDirectory := Ini.ReadString('FTP', 'CurDir', '');
if (ini.ReadBool('FTP', 'UseProxy', false)) then
ftp.ProxyServer := ini.ReadString('FTP', 'ProxyServer', '');
ftp.Login;
ini.Destroy;
end;
procedure TfrmFTP.ftpListClick(Sender: TObject);
var
i: Integer;
strTemp: String;
begin
strTemp := '';
for i:=0 to FTPList.SelectedFiles.Count-1 do
if strTemp = '' then
strTemp := ftpList.SelectedFiles[i]
else
strTemp := strTemp + ',' + ftpList.SelectedFiles[i];
edtFile.Text := strTemp;
end;
procedure TfrmFTP.btnOKClick(Sender: TObject);
var
strTemp, strTemp2: TStringList;
ini: TIniFile;
i: Integer;
bCOnnecting: Boolean;
idx: integer;
begin
ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'accounts\' + cmbAccounts.Text);
bCOnnecting := false;
if (ftp.Connected = false) then begin
btnConnectClick(nil);
curPos := 1;
exit;
end;
if isFTP then begin
ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'accounts\' + cmbAccounts.Text);
ini.WriteString('FTP', 'CurDir', ftp.CurrentDirectory);
// Were in the save state.
ftp.PutFile(ExtractFilePath(Application.ExeName) + 'temp\fileTemp.tmp', edtFile.Text);
dmMain.SelDoc.isFTP := true;
dmMain.SelDoc.FTPName := cmbAccounts.Text;
dmMain.SelDoc.FTPDir := ftp.CurrentDirectory;
dmMain.SelDoc.Caption := cmbAccounts.Text + '\' + ExtractFilename(ExtractFilePath(Application.ExeName) + 'temp\' + edtFile.Text);
dmMain.SelDoc.FileName := ExtractFilePath(Application.ExeName) + 'temp\' + edtFile.Text;
dmMain.SelDoc.sciMain.Lines.SaveToFile(dmMain.SelDoc.Filename);
dmMain.SelDoc.sciMain.Lines.LoadFromFile(dmMain.SelDoc.Filename);
dmMain.SelDoc.DoUpdateCaption;
dmMain.SelDoc.sciMain.Modified := false;
dmMain.SelDoc.sciMain.Highlighter := dmMain.GetHighlighterForFile(dmMain.SelDoc.Filename);
dmMain.SetSelLang(GetLangName(dmMain.SelDoc.sciMain.Highlighter));
idx := frmMain.tcFiles.Tabs.IndexOfObject(dmMain.SelDoc);
frmMain.tcFiles.Tabs[idx] := ExtractFileName(dmMain.SelDoc.Filename);
State := 0;
exit;
end;
if isFtp then exit;
strTemp := TStringList.Create;
if (ftp.Connected = false) or (ftpList.SelectedFiles.Count = 0) then begin
if ftp.Connected = false then begin
// First off unlink the 3 components from the ftp component
btnConnectClick(nil);
curPos := 1;
exit;
end;
strTemp2 := TStringList.Create;
strTemp2.CommaText := edtFile.Text;
curPos := 1;
end
else
curPos := 0;
ini.WriteString('FTP', 'CurDir', ftp.CurrentDirectory);
if curPos = 0 then
for i:=0 to ftpList.SelectedFiles.Count-1 do
strTemp.Add(ExtractFilePath(Application.ExeName) + 'temp\' + ftpList.SelectedFiles[i])
else
for i:=0 to strTemp2.Count - 1 do
strTemp.Add(ExtractFilePath(Application.ExeName) + 'temp\' + strTemp2[i]);
if curPos = 0 then
ftp.GetFile(ftpList.SelectedFiles, strTemp)
else
ftp.GetFile(strTemp2, strTemp);
curPos := 0;
for i:=0 to strTemp.Count-1 do
frmMain.NewFTP(strTemp[i], cmbAccounts.Text, ftp.CurrentDirectory);
strTemp.Destroy;
end;
procedure TfrmFTP.btnMakeDirClick(Sender: TObject);
var S: String;
begin
if InputQuery('New Directory', 'What name is the new directory?', S) then
Ftp.CreateDirectory(S);
end;
procedure TfrmFTP.btnRenameClick(Sender: TObject);
var S: String;
begin
if InputQuery('Rename File', 'What do you want to rename it to?', S) then
if ftpList.Selected = nil then
Ftp.RenameFile(ftpTree.Selected.Text, s)
else
ftp.RenameFile(ftpList.Selected.Caption,s);
end;
procedure TfrmFTP.btnDeleteClick(Sender: TObject);
begin
if ftpList.Selected = nil then exit;
ftp.DeleteFile(ftpList.SelectedFiles);
ftp.DeleteDirectory(ftpList.SelectedDirectories);
end;
procedure TfrmFTP.btnChmodClick(Sender: TObject);
var
frmRemote: TfrmRemotePermissions;
begin
if ftpList.Selected = nil then exit;
frmRemote := TfrmRemotePermissions.Create(self);
frmRemote.ShowModal;
if frmRemote.Execute = True then begin
ftp.FileSetAttr(ftpList.Selected.Caption, frmRemote.chkORead.Checked, frmRemote.chkOWrite.Checked,frmRemote.chkOExecute.Checked, frmRemote.chkGRead.Checked, frmRemote.chkGWrite.Checked, frmRemote.chkGExecute.checked, frmRemote.chkTread.Checked, frmRemote.chkTWrite.checked, frmRemote.chkTExecute.Checked);
ftp.Cache := false;
ftp.Refresh;
ftp.Cache := True;
end;
end;
procedure TfrmFTP.btnRefreshClick(Sender: TObject);
begin
ftp.Cache := false;
ftp.Refresh;
ftp.Cache := True;
end;
procedure TfrmFTP.btnCommandClick(Sender: TObject);
var
s: String;
begin
if InputQuery('Execute Command', 'Enter the command you would like to execute.', S) then begin
ftp.IssueCommand(s);
ftp.Cache := false;
ftp.Refresh;
ftp.Cache := True;
end;
btnRefreshClick(nil);
end;
procedure TfrmFTP.FormDestroy(Sender: TObject);
var
ini: TIniFile;
begin
ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'ini\FTP.ini');
ini.WriteInteger('FTP', 'Account', cmbAccounts.ItemIndex);
ini.Destroy;
ftp.Disconnect;
end;
procedure TfrmFTP.ftpFtpError(Sender: TObject; error: FtpError;
addinfo: String);
begin
if error = ftpPermissionDenied then
//DeleteFile(ftp.GetCurrentFile);
end;
procedure TfrmFTP.btnCancelClick(Sender: TObject);
begin
if ftp.Connected then begin
ftp.StopTransfer;
ftp.Disconnect;
end;
end;
procedure TfrmFTP.ftpFileReceived(Sender: TObject);
begin
if chkClose.Checked = true then
close;
end;
procedure TfrmFTP.ftpFileStored(Sender: TObject);
begin
if chkClose.Checked = true then
close;
end;
procedure TfrmFTP.FormShow(Sender: TObject);
begin
LoadOpts(Self);
end;
procedure TfrmFTP.FormClose(Sender: TObject; var Action: TCloseAction);
begin
SaveOpts(Self);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -