es funktioniert leider nicht...
die progressbar läuft leider nicht..
ich hänge den Code mal hier an und auch das Beispiel
ich hatte es in der IDE und auch Ohne IDE probiert auf dem MAC , da läuft es leider nicht und hängt sich auch auf und lässt sich nicht schliessen.
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
SysUtils, FileUtil, Forms, Dialogs,
StdCtrls, ComCtrls, EditBtn, ftpsend, synsock, Classes, blcksock;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
eHost: TEdit;
eFile: TEdit;
eUser: TEdit;
ePassword: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
lbStatus: TLabel;
ProgressBar1: TProgressBar;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
ftp:TFTPSend;
procedure OnHeartBeat(Sender:TObject);
procedure OnMonitor(Sender: TObject; Writing: Boolean;
const Buffer: TMemory; Len: Integer);
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.OnHeartBeat(Sender: TObject);
begin
application.ProcessMessages;
end;
procedure TForm1.OnMonitor(Sender: TObject; Writing: Boolean;
const Buffer: TMemory; Len: Integer);
begin
progressbar1.Position:=progressbar1.Position+Len;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
button1.enabled := false;
try
ftp := TFTPSend.Create;
try
//ProgressBar1.Max:=FileSize(eFile.filename);
//I like exceptions, but not sure Synapse does. :)
//ftp.Sock.RaiseExcept:=true;
//ftp.DSock.RaiseExcept:=true;
//now lets plug some callbacks in
ftp.DSock.OnMonitor:=@OnMonitor;
ftp.Sock.OnHeartbeat:=@OnHeartBeat;
ftp.DSock.OnHeartbeat:=@OnHeartBeat;
ftp.DSock.HeartbeatRate:=150; //lets make our GUI still feel responsive
ftp.Sock.HeartbeatRate:=150;
//now our props
ftp.TargetHost := eHost.text;
ftp.BinaryMode := true;
ftp.UserName := eUser.text;
ftp.Password := ePassword.text;
ftp.DirectFileName :=
eFile.Text;
eFile.text;
ftp.DirectFile := true;
if not ftp.Login then
raise Exception.Create('could not login');
progressbar1.Max:=ftp.FileSize(eFile.text);
if not ftp.RetrieveFile(eFile.text,false) then
raise Exception.Create('file not retrieved');
ftp.Logout;
finally
ftp.free;
end;
finally
button1.enabled := true;
end;
end;
end.