Q&A

  • nmftp를 이용한 파일다운에서...진행상태표시는...?
nmftp 컴포넌트를 Unit내부에서 필요에 의해 선언한 다음에 해당하는 화일을 지정하고

user, passwd등을 는 담에 Download합니다.



이와 유사한 질문을 다른 분이 하신것 같은데요...



진행상태 표시를 어떻게 해야하나요?

대부분의 질문은 폼에 ftp컴포넌트를 올려놓고나서 이벤트처리를 알아서 하는것 같은데요...

작금의 상황은 폼이 없걸랑요...

기냥 var에따가 선언하구 사용하는 겁니다...



이벤트 처리를 어찌 해야할지를 잘 몰러서리...ㅠㅠ...



부탁드립니다...



3  COMMENTS
  • Profile
    MAJOR 2001.08.24 00:05
    Work_Bagmen wrote:

    > nmftp 컴포넌트를 Unit내부에서 필요에 의해 선언한 다음에 해당하는 화일을 지정하고

    > user, passwd등을 는 담에 Download합니다.

    >

    > 이와 유사한 질문을 다른 분이 하신것 같은데요...

    >

    > 진행상태 표시를 어떻게 해야하나요?

    > 대부분의 질문은 폼에 ftp컴포넌트를 올려놓고나서 이벤트처리를 알아서 하는것 같은데요...

    > 작금의 상황은 폼이 없걸랑요...

    > 기냥 var에따가 선언하구 사용하는 겁니다...

    >

    > 이벤트 처리를 어찌 해야할지를 잘 몰러서리...ㅠㅠ...

    >

    > 부탁드립니다...

    >





    ==============

    안녕하세여..



    일단은 이벤트가 있거든요..

    이런 PacketRecvd 라는 이벤트에서 다음과 같이 하시면 될 것 같은데여..



    ProgressBar1.Max := NMFTP1.BytesTotal;

    ProGressBar1.Position := NMFTP1.BytesRecvd;



    그리고 물론 ProGressBar1를 올려 놓아야 겠지요..

    자세한 사항은 델파이에 보시면 데모를 참고를 하시면 될 겁니다..

    전 바빠서리...

    그럼 지송하지만 즐프하세여..



  • Profile
    Work_Bagmen 2001.08.25 11:39
    답변 감사드립니다.

    저...그런데 제가 원한건 고게 아녀서리...염치 불구하고 다시 함 올립니다.



    메인폼에서는 ftp를 사용하지 않습니다. 야는 기냥 var XXX : TNMFTP; 가 선언되어 있는

    다른 Unit을 이용하기만 합니다. 근데 사용되어지는 Unit은 폼이 없습니다.



    고 유닛내부에는 여러개의 함수들이 있고 고 함수들을 이용해서 FTP 전송에 필요한 정보들을

    셋팅합니다. 그리고 XXX.DownLoad를 호출하기만 합니다. 물론 메인에서의 호출이 아니라 사용되어지는 Unit내부적으로의 호출입니다.



    근데 하고자 하는 건 메인폼에서 따운되는 상황을 ProgressBar나 gauge를 이용해서

    표현하고자 하는 겁니다.



    질문이 이해가 되시는지....



    단순히 현재의 폼에 있다면 저 질문안하죠...^^



    근데 폼에 없다보니 어렵네요...그리고 실력도 엄꼬...ㅠㅠ



    그래서 생각해 봉거이 TNMFTP를 상속받은 하나의 클래스를 선언하고 고 안에서

    원하는 일을 할까하고 클래스를 선언할라고 해도 해당하는 함수 PacketRecvd가 기본 파스화일에 엄따고 컴파일 오류가 팍!!!



    음...어떻게 해야할지...



    쪼메만 도움을 주십시요....



    기둘리것슴돠....





    MAJOR wrote:

    > Work_Bagmen wrote:

    > > nmftp 컴포넌트를 Unit내부에서 필요에 의해 선언한 다음에 해당하는 화일을 지정하고

    > > user, passwd등을 는 담에 Download합니다.

    > >

    > > 이와 유사한 질문을 다른 분이 하신것 같은데요...

    > >

    > > 진행상태 표시를 어떻게 해야하나요?

    > > 대부분의 질문은 폼에 ftp컴포넌트를 올려놓고나서 이벤트처리를 알아서 하는것 같은데요...

    > > 작금의 상황은 폼이 없걸랑요...

    > > 기냥 var에따가 선언하구 사용하는 겁니다...

    > >

    > > 이벤트 처리를 어찌 해야할지를 잘 몰러서리...ㅠㅠ...

    > >

    > > 부탁드립니다...

    > >

    >

    >

    > ==============

    > 안녕하세여..

    >

    > 일단은 이벤트가 있거든요..

    > 이런 PacketRecvd 라는 이벤트에서 다음과 같이 하시면 될 것 같은데여..

    >

    > ProgressBar1.Max := NMFTP1.BytesTotal;

    > ProGressBar1.Position := NMFTP1.BytesRecvd;

    >

    > 그리고 물론 ProGressBar1를 올려 놓아야 겠지요..

    > 자세한 사항은 델파이에 보시면 데모를 참고를 하시면 될 겁니다..

    > 전 바빠서리...

    > 그럼 지송하지만 즐프하세여..

    >



  • Profile
    Work_Bagmen 2001.09.03 01:17
    Work_Bagmen wrote:

    > 답변 감사드립니다.

    > 저...그런데 제가 원한건 고게 아녀서리...염치 불구하고 다시 함 올립니다.

    >

    > 메인폼에서는 ftp를 사용하지 않습니다. 야는 기냥 var XXX : TNMFTP; 가 선언되어 있는

    > 다른 Unit을 이용하기만 합니다. 근데 사용되어지는 Unit은 폼이 없습니다.

    >

    > 고 유닛내부에는 여러개의 함수들이 있고 고 함수들을 이용해서 FTP 전송에 필요한 정보들을

    > 셋팅합니다. 그리고 XXX.DownLoad를 호출하기만 합니다. 물론 메인에서의 호출이 아니라 사용되어지는 Unit내부적으로의 호출입니다.

    >

    > 근데 하고자 하는 건 메인폼에서 따운되는 상황을 ProgressBar나 gauge를 이용해서

    > 표현하고자 하는 겁니다.

    >

    > 질문이 이해가 되시는지....

    >

    > 단순히 현재의 폼에 있다면 저 질문안하죠...^^

    >

    > 근데 폼에 없다보니 어렵네요...그리고 실력도 엄꼬...ㅠㅠ

    >

    > 그래서 생각해 봉거이 TNMFTP를 상속받은 하나의 클래스를 선언하고 고 안에서

    > 원하는 일을 할까하고 클래스를 선언할라고 해도 해당하는 함수 PacketRecvd가 기본 파스화일에 엄따고 컴파일 오류가 팍!!!

    >

    > 음...어떻게 해야할지...

    >

    > 쪼메만 도움을 주십시요....

    >

    > 기둘리것슴돠....





    음냐...

    결국은 해결했네요...



    담처럼 클래스를 하나 맹글고...



    HcmNMFTP = class(TNMFTP)

    private

    { Private declarations }

    protected

    { Private declarations }

    public

    { Private declarations }

    procedure FTPPacketRecvd(Sender: TObject);

    procedure FTPPacketSent(Sender: TObject);

    end;





    실제 사용은 담처럼 했습니다...



    try

    ftpVariable:= HcmNMFTP.Create(Application);



    // 김정수 20010824-------------------------

    ftpVariable.OnPacketRecvd := ftpVariable.FTPPacketRecvd;

    ftpVariable.OnPacketSent := ftpVariable.FTPPacketSent;

    // 김정수 20010824-------------------------



    except

    Result := False;

    Exit;

    end;





    위에서 선언된 함수는



    //-------------------------------------------------

    // 현재 다운받고 있는 상황을 표시.(다운로드 정도)

    //-------------------------------------------------

    procedure HcmNMFTP.FTPPacketRecvd(Sender: TObject);

    var

    i : Integer;

    Gauge_Comp : TComponent;

    ApplMainForm : TForm;

    begin

    // 현재 ActiveForm내에 TGauge 컴포넌트가 존재하는지 검사.

    // 만약 존재하면 해당 컴포넌트에 다운로드 정도를 표시.

    // 존재하지 않은 경우엔 아무일도 하지 않는다...

    if (Screen.ActiveForm = nil) then

    begin

    for i := 0 to Application.MainForm.ComponentCount -1 do

    begin

    if Application.MainForm.Components[i] is TGauge then

    begin

    with Application.MainForm.Components[i] as TGauge do

    begin

    Progress := ftpVariable.BytesRecvd * 100 div ftpVariable.BytesTotal;

    end;

    end;

    end;

    end

    else

    begin

    for i := 0 to Screen.ActiveForm.ComponentCount -1 do

    begin

    if Screen.ActiveForm.Components[i] is TGauge then

    begin

    with Screen.ActiveForm.Components[i] as TGauge do

    begin

    Progress := ftpVariable.BytesRecvd * 100 div ftpVariable.BytesTotal;

    end;



    end;

    end;

    end;



    end;



    얼매나 보냈나를 표시하는 경우도 위와 유사하게....구현.....하심 될겁니다..



    혹시나 저와 같은 고민을 하시는 분이 이쓰까 싶어서 올립니다...



    그럼...아뇽...