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
[54763] Re:Indy10 IdFTP RegisterFTPListParser 함수 문제 (자답)
xiles [xiles] 1939 읽음    2008-10-06 00:57
해결방법(?)을 찾아냈네요..^^  삼일만에 -_-;
직접 RegisterFTPListParser() 함수를 호출할 필요가 없네요.

간단히 정리를 해보면
Indy 9에서는 딱히 다른 것을 할 필요없이 FTP DirectoryListing을 사용할 수 있었습니다.
그런데 Indy10에서는 그냥 DirectoryListing을 사용하려 하면, Parser가 등록되어 있지 않다고 메시지를 토해냈습니다.
Indy10에서는 서버 종류별로 FTP에서 얻은 리스팅을 Parse 하는 Parser가 30여종류가 있고, 이를 미리 등록을 해놔야 합니다.

처음에는 Parser를 등록하는 함수가 있는듯하길래 아래처럼 등록을 하려고 했었습니다.
#include <idFTPListParseUnix.hpp>
...
RegisterFTPListParser(__classid(TidFTPLPUnix));

이렇게 하니 링크 중 Unresolved external 'RegisterFTPListParser(...'... 라 오류가 나서
RegisterFTPListParser가 선언되어 있는 idFTPListParseBase.hpp 를 include 하고
#pragma link "IdFTPListParseBase" 로 링크를 해주어도..계속 오류가 났었습니다.

근데 자세히 살펴보다보니 각 파서별로 .pas 소스를 보니 initialization 할 때 자기 스스로  RegisterFTPListPaser를 불러주고있었습니다...그래서 이 함수를 안쓰고 파서자체만 링크시켜주니 잘 되네요.

#include <IdFTPListParseUnix.hpp>
#pragma link "IdFTPListParseUnix"

이런식으로 원하는 파서들을 등록해주면 됩니다. 만약 30여개의 모든 파서를 몽땅 포함시키고 싶으면
#include <IdAllFTPListParsers.hpp>
#pragma link "IdAllFTPListParsers"
처럼 사용하면 됩니다.

30개를 모두 포함시켜보니, Unix 파서 하나만 포함시켰을때에 비해서 Debug 빌드의 경우
약 100KB 정도 실행파일크기를 뿔리네요..



xiles 님이 쓰신 글 :
: Indy10 TIdFTP 를 사용하려는데,
: ListParser를 등록하기 위해서 RegisterFTPListParser 함수를 사용했습니다.
:
: 근데 링크를 하면서 Unresolved external 'RegisterFTPListParser(TMetaClasss *const)' referenced from ...
: 오류가 나네요..ㅠㅠ
:
: 델파이로 하면 uses 에 IdFTPListParserBase  를 추가해주면 문제 없이 되는데, 이상하게 빌더로 하기만 하면 계속 오류가 나네요..-_-;
:
: Indy10 소스에 있던걸 다시 컴팔해서 bpi, lib 파일 만들어서 교체를 해봐도 해결되지 않네요..
:
: 혹 뭐가 문제일지 아시는 분 계신가요...

+ -

관련 글 리스트
54743 Indy10 IdFTP RegisterFTPListParser 함수 문제 xiles 1190 2008/10/03
54763     Re:Indy10 IdFTP RegisterFTPListParser 함수 문제 (자답) xiles 1939 2008/10/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.