Ik heb een vreemd probleem. Ik ben bezig met een FTP client te maken. Nou dat werkt allemaal goed voor wat ik op dit moment heb geprobeerd alleen wanneer ik de geconnect heb met de ftp server en dan de dirlist opvraag kan ik de applicatie niet meer sluiten. Ik bedoel dus echt de applicatie en niet de connectie met de ftp server. De knoppen werken gewoon(dat heb ik met breakpoints getest)maar hij voer op een of andere manier niet het close commando uit en gaat gewoon door. Wie kan mij hiermee helpen. Ik ben geen goeroe maar een begint programmeur dus niet te moeilijk graag. 
unit Ftp;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Psock, NMFtp, FileCtrl, Grids, ExtCtrls;
type
TForm1 = class(TForm)
NMFTP1: TNMFTP;
btnConnect: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
btnDisconnect: TButton;
StringGrid1: TStringGrid;
btnClose: TButton;
btnCmdList: TButton;
procedure btnConnectClick(Sender: TObject);
procedure btnDisconnectClick(Sender: TObject);
procedure btnCloseClick(Sender: TObject);
procedure NMFTP1Success(Trans_Type: TCmdType);
procedure NMFTP1Connect(Sender: TObject);
procedure btnCmdListClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.NMFTP1Success(Trans_Type: TCmdType);
var
I: Integer;
begin
case Trans_Type of
cmdList:
begin
for I := 0 to (StringGrid1.ColCount - 1) do
StringGrid1.Cols[I].Clear;
StringGrid1.RowCount := NMFTP1.FTPDirectoryList.name.Count;
StringGrid1.ColCount := 4;
StringGrid1.Cells[0, 0] := 'Filename';
StringGrid1.Cells[1, 0] := 'File Size';
StringGrid1.Cells[2, 0] := 'Modified Date';
StringGrid1.Cells[3, 0] := 'Attributes';
begin
for I := 0 to (NMFTP1.FTPDirectoryList.name.Count - 1) do
with NMFTP1.FTPDirectoryList do
begin
StringGrid1.Cells[0, I+1] := name[I];
StringGrid1.Cells[1, I+1] := Size[I];
StringGrid1.Cells[2, I+1] := ModifDate[I];
StringGrid1.Cells[3, I+1] := Attribute[I];
end;
end;
end;
end;
end;
procedure TForm1.btnConnectClick(Sender: TObject);
begin
NMFTP1.Host := Edit1.Text;
NMFTP1.Port := 676;
NMFTP1.TimeOut := 10000;
NMFTP1.UserID := Edit2.Text;
NMFTP1.Password := Edit3.Text;
NMFTP1.Connect;
end;
procedure TForm1.btnDisconnectClick(Sender: TObject);
begin
NMFTP1.Disconnect;
end;
procedure TForm1.btnCloseClick(Sender: TObject);
begin
Close;
end;
procedure TForm1.NMFTP1Connect(Sender: TObject);
begin
NMFTP1.List;
end;
procedure TForm1.btnCmdListClick(Sender: TObject);
begin
NMFTP1Success(cmdList);
end;
end.
unit Ftp;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Psock, NMFtp, FileCtrl, Grids, ExtCtrls;
type
TForm1 = class(TForm)
NMFTP1: TNMFTP;
btnConnect: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
btnDisconnect: TButton;
StringGrid1: TStringGrid;
btnClose: TButton;
btnCmdList: TButton;
procedure btnConnectClick(Sender: TObject);
procedure btnDisconnectClick(Sender: TObject);
procedure btnCloseClick(Sender: TObject);
procedure NMFTP1Success(Trans_Type: TCmdType);
procedure NMFTP1Connect(Sender: TObject);
procedure btnCmdListClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.NMFTP1Success(Trans_Type: TCmdType);
var
I: Integer;
begin
case Trans_Type of
cmdList:
begin
for I := 0 to (StringGrid1.ColCount - 1) do
StringGrid1.Cols[I].Clear;
StringGrid1.RowCount := NMFTP1.FTPDirectoryList.name.Count;
StringGrid1.ColCount := 4;
StringGrid1.Cells[0, 0] := 'Filename';
StringGrid1.Cells[1, 0] := 'File Size';
StringGrid1.Cells[2, 0] := 'Modified Date';
StringGrid1.Cells[3, 0] := 'Attributes';
begin
for I := 0 to (NMFTP1.FTPDirectoryList.name.Count - 1) do
with NMFTP1.FTPDirectoryList do
begin
StringGrid1.Cells[0, I+1] := name[I];
StringGrid1.Cells[1, I+1] := Size[I];
StringGrid1.Cells[2, I+1] := ModifDate[I];
StringGrid1.Cells[3, I+1] := Attribute[I];
end;
end;
end;
end;
end;
procedure TForm1.btnConnectClick(Sender: TObject);
begin
NMFTP1.Host := Edit1.Text;
NMFTP1.Port := 676;
NMFTP1.TimeOut := 10000;
NMFTP1.UserID := Edit2.Text;
NMFTP1.Password := Edit3.Text;
NMFTP1.Connect;
end;
procedure TForm1.btnDisconnectClick(Sender: TObject);
begin
NMFTP1.Disconnect;
end;
procedure TForm1.btnCloseClick(Sender: TObject);
begin
Close;
end;
procedure TForm1.NMFTP1Connect(Sender: TObject);
begin
NMFTP1.List;
end;
procedure TForm1.btnCmdListClick(Sender: TObject);
begin
NMFTP1Success(cmdList);
end;
end.