Q&A

  • nmftp를 이용하여 화일을 다운 받으려고 하는데 쏘스를 좀 봐주세용.
아래의 내용처럼 간단하게 화일을 복사하고 실행하려고 하는데 화면에
다운받고 있는 상태를 표시하려고 PACKETRECVED를 이용했는데
화면에 상태가 표시 되지 않네요... 고수님들의 한수를 부탁드립니다.
그리고 또한 수정할 부분이 있다면 한수를 좀...
/////////////////////////////////////////////////////////////////
unit DOWN;

interface

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

type
  TDown_F = class(TForm)
    NMFTP1: TNMFTP;
    ProgressBar1: TProgressBar;
    Panel1: TPanel;
    Panel8: TPanel;
    procedure NMFTP1PacketRecvd(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure NMFTP1TransactionStop(Sender: TObject);
    procedure NMFTP1TransactionStart(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Down_F: TDown_F;

implementation

{$R *.DFM}

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

procedure TDown_F.FormShow(Sender: TObject);
begin

   NmFtp1.Host   := 'xxx.xxx.xxx.xxx';
   NmFtp1.UserID := 'Anonymous';
   Try
   Begin
     Panel1.Caption := '서버와 접속 시도중입니다.';
     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.NMFTP1TransactionStop(Sender: TObject);
begin
   Panel1.Caption := '전송이 완료되었습니다.';
end;

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

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

end.

///////////////
0  COMMENTS
    • 강정구
    • 2002.02.18 20:27
    • 1 COMMENTS
    • /
    • 0 LIKES
    • * 아자!! *
      2002.02.18 21:40
      소스를 찾아보면 많이 있을것 같은데... 저두 그 부분 구현해볼려구 이곳저곳 찾다가... 비슷한 답변을 ...
    • 이명옥
    • 2002.02.18 20:20
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 허일학
      2002.02.18 20:31
      다음과 같이 하시면 폼의 이동과 크기를 고정 시킬 수 있습니다.. 참고하시길 바랍니다..^^... &n...
    • 이정택
    • 2002.02.18 20:12
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 설승호
    • 2002.02.18 19:42
    • 4 COMMENTS
    • /
    • 0 LIKES
    • Yellena
      2002.04.12 20:39
      저두 브레이크 포인트가 걸리질 않아요... 어떻게 해야 하나요?
    • gudwhrla
      2002.02.18 21:52
      메인 프로그램에서 dll를 디버깅 할 수 는 없습니다. 거꾸로 하셔야 합니다. Dll 프로젝트로 Open 하...
    • 설승호
      2002.02.18 22:38
      네... 답변은 감사 합니다만... DLL프로젝트를 이미 열구 프로젝트내에서 브래이킹포인트를 걸어 놓은 상...
    • 설승호
      2002.02.18 22:37
      이미 그렇게 한거거덩요.. DLL을 수정할려는거니깐 DLL 프로젝트에서 브래이킹 포인트를 붙인거지여. 런 ...
    • 김기수
      2002.02.18 21:05
      <- Delphi Tips 에서 textfile 로 검색후 첫번째 게시물을 참고 하십시오.
    • 최용일
      2002.02.18 18:44
      안녕하세요. 최용일입니다. 바탕화면이라.... 여기에다가 프로그램 설치하는 경우는 한번도 못봤는데......
    • 허일학
      2002.02.18 18:42
      단순히 외부실행파일을 불러들여 실행할려면 다음가 같이 하시면 될꺼 같은데요..^^.. 참고하시기 바...
    • 우영범
      2002.02.18 18:27
      단순히 기능만 구현하려면 SendStream만으로 가능합니다. 하지만 전송 상황이라든가 에러 처리를 위해서는...
    • 노정윤
    • 2002.02.18 07:04
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 우영범
      2002.02.18 18:22
      ShGetFileInfo API를 이용하면 됩니다. // Get System Image List procedure TfrmRemoteExplorer.GetSy...
    • 조현석
    • 2002.02.18 06:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김규한
      2002.02.18 20:35
      안녕하세요? 저같은 분이시네용~ 혼자 독불장군식으로 막무가내로 배웠는데 ^^; 암튼 책은요. 가남사...
    • 노수경
    • 2002.02.18 05:40
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최보&#46
    • 2002.02.18 04:11
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 권대웅
      2002.02.18 04:33
      1. FileExists란 함수를 쓰세요! if FileExists('여기에 파일 패스와 이름을 넣고...') then  ...
    • 이승근
    • 2002.02.18 02:39
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 서은구
      2002.02.18 05:50
      제가 아는 선에 답변을 드리도록하죠.. 첫째 as 를 사용하십시요 select  a.코드, a.상호, sum...
    • 김기수
      2002.02.18 01:55
      레코드? 필드? 정확한 질문이 정확한 답변을 얻습니다.
    • 권대웅
      2002.02.18 19:03
      DB의 모든 테이블과 테이블의 필드정보 얻는 간단한 예제입니다. unit Unit1; interface use...
    • 박영수
      2002.02.18 18:18
      예 죄송합니다. 제 입장만 생각했네요. ^^; 필드를 알고 싶습니다. 아신다면 가르쳐주면 정말 고맙겠습니...
    • 이추형
      2002.02.18 18:52
      SQL SERVER는 손 놓은지 여러해가 되어 잘 기억이 나지 않지만 오라클은 유저의 권한이 있다면 다음의 SQL...
    • 허일학
      2002.02.18 01:52
      정확한건 아닙니다만...다음과 같은 형식을 조금응용하시면 원하시는 결과를 얻을 수 있을것이라 생각 ...
    • 김희창
    • 2002.02.17 12:04
    • 2 COMMENTS
    • /
    • 0 LIKES
    • Mr. Ziker
      2002.02.17 17:46
      안녕하세욤! SQL-SERVER에서는 운영체제 자체에 등록된 계정으로 허가를 받아 접속이 가능합니다. 이부...
    • 김희창
      2002.02.18 01:15
      물론 그 계정도 superuser 계정으로 줬습니다.. 덧붙이자면.. TDatabase 의 계정 밑 DB를 묻는 곳에서 p...
    • Mr. Ziker
      2002.02.17 19:15
      안녕하세욤! 받는 부분에서  스트림으로 못 받는거 같은데요.. 보낼때 SendStream으로 보내...
    • 구철수
    • 2002.02.17 09:19
    • 0 COMMENTS
    • /
    • 0 LIKES
    • Mr. Ziker
      2002.02.17 19:45
      안녕하세욤!! 기본적으로 MDI폼에서 Child폼을 생성 할때 동적 생성을 합니다. 그정보는 부모폼에 있...
    • 박남준
    • 2002.02.17 08:43
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 한방러쉬
      2002.02.20 20:11
      맨윗단에 있는 TSocket 에서 원하는 대로 지정해주면 될것 같은데여... 아래는 참고 소스 코드 임다... ...
    • Mr. Ziker
      2002.02.17 19:23
      안녕하세욤! UDP는 통신용으로는 적합하지 않다고 생각 합니다. 그래서 요즘 TCP/IP를 쓰는것이 UDP...
    • 박남준
      2002.02.17 21:21
      저녁에 글을 올렸는데 아침에 답변을 보게 되네요.. 답변 감사합니다..^^ 근데 제가 몇 가지 빠트린 것이...