C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[47417] FTP 속도 향상 시키기
초보 [] 2603 읽음    2006-12-15 16:13
FTP를 거의 다 만들었습니다. 
다음과 같은 코드로 접속 했을 때 서버의 디렉토리 내용을 트리뷰에 다 표시되게 하였는데..
시간이 너무 오래 걸립니다. 십분이상 걸리는 듯...ㅠㅠ
알FTP는 빨리 뜨는데 말이죠..
접속 후 트리뷰의 목록이 뜨는데 걸리는 시간을 줄이기 위해서 할 수 있는 방법이 있을까요?
참 IndyFTP를 이용하였습니다.(NMFTP 아님)



void __fastcall TForm2::TreeMade()
{
        int j=0;
        TTreeNode *cNode, *pNode;
        TTreeNode *MyTreeView;
        pNode=Form1->TreeView1->Items->Item[0];
        MyTreeView=Form1->TreeView1->Items->Item[0]->getFirstChild();
        Form1->NMFTP1->ChangeDir(MyTreeView->Text);

        TStringList* temp= new TStringList();
        AnsiString Line;
        AnsiString name;
        bool IsDirectory=false;
        int i,pa,err=0;


        if(Form1->NMFTP1->Connected())
        {
                while(1)
                {
                        j=0;
                        IsDirectory=false;
                        try
                        {
                                Form1->NMFTP1->List(temp," ",true);
                        }
                        catch(...)
                        {
                                err=1;
                        }

                        if(err!=1)
                        {
                        for(i=0;i<temp->Count;i++)
                        {
                                Line = temp->Strings[i];

                                if(Line[1]=='d')
                                {
                                        name=GetFileName(Line,&IsDirectory);
                                        Form1->TreeView1->Items->AddChild(MyTreeView,name);

                                        j++;
                                }

                        }
                        }

                        if(j!=0 && err!=1)
                        {
                                pNode=MyTreeView;
                                MyTreeView=pNode->getFirstChild();
                                try
                                {
                                        Form1->NMFTP1->ChangeDir(MyTreeView->Text);
                                }
                                catch(...)
                                {
                                        pa=1;
                                }
                                if(pa==1)
                                {
                                        MyTreeView=pNode->GetNextChild(MyTreeView);
                                        Form1->NMFTP1->ChangeDir(MyTreeView->Text);
                                        pa=0;
                                }
                                j=0;
                        }
                        else
                        {

                                cNode=MyTreeView;
                                MyTreeView=pNode->GetNextChild(cNode);
                                if(MyTreeView)
                                {
                                        Form1->NMFTP1->ChangeDir("..");
                                        Form1->NMFTP1->ChangeDir(MyTreeView->Text);
                                }

                                else
                                {
                                        do
                                        {
                                                cNode=pNode;
                                                pNode=cNode->Parent;
                                                Form1->NMFTP1->ChangeDir("..");
                                                if(!pNode)
                                                        break;
                                                MyTreeView=pNode->GetNextChild(cNode);
                                        }while(!MyTreeView);

                                        if(!pNode)
                                                break;
                                        if(Form1->NMFTP1->RetrieveCurrentDir()==iniDir)
                                                break;

                                        Form1->NMFTP1->ChangeDir("..");
                                        Form1->NMFTP1->ChangeDir(MyTreeView->Text);
                                }

                        }
                       err=0;
                }
        }
        delete temp;
}

+ -

관련 글 리스트
47417 FTP 속도 향상 시키기 초보 2603 2006/12/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.