Q&A

  • nmftp를 이용하여 화일을 다운 받으려고 하는데 쏘스를 좀 봐주세용.
Client에서 Ftp Server의 화일을 다운 받으려고 하는데 서버에 접속하고
Progress바가 움직이면서 다운받아지는 상태를 보이려고 합니다.
Button1을 Click할 경우에는 진행되는 상황이 보이는데
전 이프로그램을 실행하면 Click을 하지 않아도 자동으로 다운되는
상황이 보이고 다 받으면 다운 받은 프로그램이 실행되도록 하고 싶거든요.
그런데 창이 뜨지도 않고 바로 다운을 받아서 실행프로그램을 실행합니다.
왜 다운받는 상황의 창이 뜨지 않는 걸까요?
/////////////////////////////////////////////////////////////////////
unit DOWN;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Buttons, Psock, NMFtp, ComCtrls, ExtCtrls, StdCtrls;

type
  TDown_F = class(TForm)
    NMFTP1: TNMFTP;
    ProgressBar1: TProgressBar;
    Panel8: TPanel;
    StatusBar1: TStatusBar;
    Button1: TButton;
    procedure NMFTP1PacketRecvd(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure NMFTP1TransactionStop(Sender: TObject);
    procedure NMFTP1TransactionStart(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure NMFTP1Connect(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Down_F: TDown_F;

implementation

{$R *.DFM}

procedure TDown_F.NMFTP1PacketRecvd(Sender: TObject);
begin
   ProgressBar1.Max      := NmFtp1.BytesTotal;
   ProgressBar1.Position := NmFtp1.BytesRecvd;
   StatusBar1.SimpleText := IntToStr(Nmftp1.BytesTotal) + ' 중에 ' + IntToStr(NmFtp1.bytesrecvd) + ' 를 전송받았습니다.';

   Application.ProcessMessages;
end;

procedure TDown_F.FormShow(Sender: TObject);
begin
   Top  := 0;
   Left := 0;

   NmFtp1.Host   := 'XXX.XXX.XXX.XXX';
   NmFtp1.UserID := 'Anonymous';
end;

procedure TDown_F.NMFTP1TransactionStop(Sender: TObject);
begin
   StatusBar1.SimpleText := '전송이 완료되었습니다.';
end;

procedure TDown_F.NMFTP1TransactionStart(Sender: TObject);
begin
   StatusBar1.SimpleText := '전송이 시도중 입니다.';
end;

procedure TDown_F.Button1Click(Sender: TObject);
begin
   Try
   Begin
      NMFTP1.Connect;
      If SetCurrentDir('C:imsi') = False Then
         CreateDir('C:imsi');

      If (FileExists('C:imsiimsi.EXE') = False) Or
         (FileDateToDateTime(FileAge('C:imsiimsi.EXE')) <>
          FileDateToDateTime(FileAge('imsi.EXE'))) Then
      Begin
         Try
            NmFtp1.DownLoad('imsi.EXE','C:imsiimsi.EXE');
         Except
         On E:Exception Do
         Begin
            Application.MessageBox('화일 복사중 Error(101)가 발생했습니다.'
         , '다운로드중...', mb_IconError + mb_Ok);
            Close;
         End;
         End;
      End;

      NmFtp1.Disconnect;
      WinExec(PChar('C:imsiimsi.EXE'), SW_Show);
      Close;
   End;
   Except
   On E:Exception Do
   Begin
       Application.MessageBox('접속에 실패했습니다.', '접속중...', mb_IconError + mb_Ok);
       Close;
   End;
   End;

end;

procedure TDown_F.NMFTP1Connect(Sender: TObject);
begin
   StatusBar1.SimpleText := '서버와 연결되었습니다.';
end;

end.
0  COMMENTS