ftpunit.pas
来自「著名的SecureBlackBox控件完整源码」· PAS 代码 · 共 656 行 · 第 1/2 页
PAS
656 行
end;
procedure TFTPForm.btnPWDClick(Sender: TObject);
begin
if FClient.Active then
begin
try
memoOutput.Text := memoOutput.Text + 'Current directory is: ' + FClient.GetCurrentDir + #13#10;
except
on E : Exception do
Log(E.Message, true);
end;
end
else
Log(sNotConnected, true);
end;
procedure TFTPForm.FormDestroy(Sender: TObject);
begin
FinalizeApp;
end;
procedure TFTPForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
Disconnect;
CanClose := true;
end;
procedure TFTPForm.btnCWDClick(Sender: TObject);
begin
if FClient.Active then
begin
if editCmdParam.Text = '' then
begin
ShowMessage(sNoParameter);
end
else
begin
try
Log('Changing directory...', false);
FClient.Cwd(Trim(editCmdParam.Text));
Log('Directory changed.' + #13#10 + 'Current directory is: ' + FClient.GetCurrentDir, false);
except
on E : Exception do
Log(E.Message, true);
end;
end;
end
else
Log(sNotConnected, true);
end;
procedure TFTPForm.btnCDUpClick(Sender: TObject);
begin
if FClient.Active then
begin
try
Log('Changing directory...', false);
FClient.CDUp();
Log('Directory changed.' + #13#10 + 'Current directory is: ' + FClient.GetCurrentDir, false);
except
on E : Exception do
Log(E.Message, true);
end;
end
else
Log(sNotConnected, true);
end;
procedure TFTPForm.mnuAboutClick(Sender: TObject);
begin
ShowAbout;
end;
procedure TFTPForm.FormCreate(Sender: TObject);
begin
InitializeApp;
end;
procedure TFTPForm.btnListClick(Sender: TObject);
begin
if FClient.Active then
begin
try
Log('Retrieving directory contents ...', false);
FClient.GetFileList;
Log('Directory contents retrieved', false);
except
on E : Exception do
Log(E.Message, true);
end;
end
else
Log(sNotConnected, true);
end;
procedure TFTPForm.ClientTextDataLine(Sender: TObject;
const TextLine: string);
begin
memoOutput.Text := memoOutput.Text + TextLine + #13#10;
end;
procedure TFTPForm.btnMKDClick(Sender: TObject);
begin
if FClient.Active then
begin
if editCmdParam.Text = '' then
begin
ShowMessage(sNoParameter);
end
else
begin
try
Log('Creating directory...', false);
FClient.MakeDir(Trim(editCmdParam.Text));
Log('Directory created.', false);
except
on E : Exception do
Log(E.Message, true);
end;
end;
end
else
Log(sNotConnected, true);
end;
procedure TFTPForm.btnRMDClick(Sender: TObject);
begin
if FClient.Active then
begin
if editCmdParam.Text = '' then
begin
ShowMessage(sNoParameter);
end
else
begin
try
Log('Removing directory...', false);
FClient.RemoveDir(Trim(editCmdParam.Text));
Log('Directory removed.', false);
except
on E : Exception do
Log(E.Message, true);
end;
end;
end
else
Log(sNotConnected, true);
end;
procedure TFTPForm.btnDownloadClick(Sender: TObject);
var FDataStream : TStream;
begin
if FClient.Active then
begin
if editCmdParam.Text = '' then
begin
ShowMessage(sNoParameter);
end
else
begin
dlgSave.Filename := ExtractFileName(editCmdParam.Text);
if dlgSave.Execute then
try
FDataStream := TFileStream.Create(dlgSave.Filename, fmCreate or fmShareDenyWrite);
try
Log('Recieving file...', false);
frmProgress.lSourceFile.Caption := Trim(editCmdParam.Text);
frmProgress.lDestFile.Caption := dlgSave.Filename;
frmProgress.pbProgress.Min := 0;
frmProgress.pbProgress.Position := 0;
frmProgress.Show;
try
try
FClient.Receive(Trim(editCmdParam.Text), FDataStream, 0, 0);
finally
frmProgress.Hide;
end;
except
on E : EOperationCancelledError do ;
end;
Log('File received.', false);
finally
FreeAndNil(FDataStream);
end;
except
on E : Exception do
Log(E.Message, true);
end;
end;
end
else
Log(sNotConnected, true);
end;
procedure TFTPForm.btnUploadClick(Sender: TObject);
var FDataStream : TStream;
begin
if FClient.Active then
begin
if editCmdParam.Text = '' then
begin
ShowMessage(sNoParameter);
end
else
begin
dlgOpen.Filename := ExtractFileName(editCmdParam.Text);
if dlgOpen.Execute then
try
FDataStream := TFileStream.Create(dlgOpen.Filename, fmOpenRead or fmShareDenyWrite);
try
Log('Sending file...', false);
frmProgress.lSourceFile.Caption := Trim(editCmdParam.Text);
frmProgress.lDestFile.Caption := dlgSave.Filename;
frmProgress.pbProgress.Min := 0;
frmProgress.pbProgress.Position := 0;
frmProgress.Show;
try
try
FClient.Send(FDataStream, Trim(editCmdParam.Text), 0, FDataStream.Size - 1, false, 0);
finally
frmProgress.Hide;
end;
except
on E : EOperationCancelledError do ;
end;
Log('File sent.', false);
finally
FreeAndNil(FDataStream);
end;
except
on E : Exception do
Log(E.Message, true);
end;
end;
end
else
Log(sNotConnected, true);
end;
procedure TFTPForm.btnDeleteClick(Sender: TObject);
begin
if FClient.Active then
begin
if editCmdParam.Text = '' then
begin
ShowMessage(sNoParameter);
end
else
begin
try
Log('Deleting file...', false);
FClient.Delete(Trim(editCmdParam.Text));
Log('File deleted.', false);
except
on E : Exception do
Log(E.Message, true);
end;
end;
end
else
Log(sNotConnected, true);
end;
procedure TFTPForm.ClientControlreceive(Sender: TObject;
const TextLine: string);
begin
memoOutput.Text := memoOutput.Text + '<<<' + TextLine + #13#10;
end;
procedure TFTPForm.ClientControlSend(Sender: TObject;
const TextLine: string);
begin
memoOutput.Text := memoOutput.Text + '>>>' + TextLine + #13#10;
end;
procedure TFTPForm.ClientProgress(Sender : TObject; Total, Current : Int64; var Cancel : boolean);
begin
if Total <= 0 then
begin
frmProgress.pbProgress.Max := 100;
frmProgress.pbProgress.Position := Current mod 100;
end
else
begin
frmProgress.pbProgress.Max := Total;
frmProgress.pbProgress.Position := Current;
end;
Application.ProcessMessages;
if frmProgress.Canceled then Cancel := true;
frmProgress.Canceled := false;
end;
procedure TFTPForm.ClientSSLError(Sender: TObject; ErrorCode: integer;
Fatal, Remote: boolean);
var S : string;
begin
if Fatal then
S := 'Fatal '
else
S := '';
if Remote then
S := S + 'Remote '
else
S := s + 'Local ';
S := S + 'Error ' + IntToStr(ErrorCode);
Log(S, true);
Log('If you are getting error 75778, this can mean that the remote server doesn''t support specified SSL/TLS version', true);
end;
initialization
SetLicenseKey('ADDCD14AD06709806817E0B3D7BFD0A2222D536FE156466C5D5FE65DB5DEAE76' +
'FFDEBC07E915A5751C12C01C783958872A38E4A5EDA140E7247E0F2E56442A3C' +
'F3E9347AD8FDE52083A0DFC86BC00ECB0FD0CF1B51159A2BCB84F6EA6349EF47' +
'5C15A59AFCC55F7C3AAD26C279628B5D91B1DC94BD2385354A70CCA3B76101D9' +
'F41C84A639FC3CCE4BA8F0CC4A66DCD150114A3F58C1AD46B7B94643741BC20A' +
'8DCA83AB921480951B423CAA19EF1863A47CA2C3422E7E5634BED98939A5AE43' +
'DE1E4BAD79E66D8A5C973B3455656C8C9B6FF024FADD6CDA02D0F506D98493C8' +
'BD1ED7B237DB75FA31F2C82654490CDDDEE24E19939137B9E1DB05508733B22F');
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?