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
[19092] 해결됐습니다.ㅋㅋㅋ
윤구 [urbane9] 1389 읽음    2002-06-04 01:54
dynamic_cast이용하니까 되는거 같은데...
델파이에서 TIdAttachment(~~~)이건 그럼 형변환을 뜻하는 건가요?
전 이게 TIdAttachment인스턴스 생성하는 걸로 생각을 하고 빌더에서 인스턴스 생성해서 거기에 인자로 줄려고 했었던 거에서 문제가 생겼나 보네요..

초보여서 뭘 몰
윤구 님이 쓰신 글 :
: 전에도 여기다 비슷한 질문 두번이나 올렸지만 4일이 지난 아직도 제가 해결을 못해서 다시 질문 드립니다.
: 델파이6 시작 그리고 완성이라는 책의 부록에 있는 메일관련예제를 빌더로 만들어 보고 있습니다.
: 헌데 다른 부분은 델파이에서 빌더로 쉽게 바꿨는데 이 부분에서 막힙니다.
:
: //IdMsg.MessageParts.Items[i]과 TIdAttachment 타입인지 비교하는거 같은데 빌더에서는 어떤 함수를 사용해야 하지요?
:             if IdMsg.MessageParts.Items[i] is TIdAttachment then
: //빌더에서 이렇게 가져다 사용하면 에러가 나서 제 나름대로 바꾸어서 컴파일을 해도 에러가 나거
: //나 아니면 컴파일 에러는 나지 않지만 엑세스바이올레이션이 발생합니다. 아랫 부분을 빌더로 어
: //떻게 변경을 해야 할지 힌트라도 주시면 고맙겠습니다.
:      ListBox1.Items.Add( TIdAttachment( IdMsg.MessageParts.Items[i] ).FileName ) //바로 이것
:             else if IdMsg.MessageParts.Items[i] is TIdText then
:             begin
:                TStringList( TIdText( IdMsg.MessageParts.Items[i] ).Body ).SaveToFile(ExtractFilePath(Application.ExeName) + 'tempmail.htm');
:             end;
:
: 윤구 님이 쓰신 글 :
: : 질문 올리고 나서 생각좀 해보고 있는데요...그래도 해결 못해서 다시 질문 올립니다.
: :
: : TIdAttachment클래스의 생성자가 어떻게 선언돼있는지 찾아보니까
: : __fastcall TIdAttachment(TIdMessageParts* Collection, const AnsiString AFileName);
: : 이게 생성자 같은데...
: : 헌데 소스상에서
: :
: : AnsiString astrFileName;
: : astrFileName = "temp";
: : TIdAttachment *IdAttachment = new TIdAttachment(IdMessage1->MessageParts->Items[i],astrFileName);
: :
: : 이렇게 작성을 하고 컴파일 하면 아래와 같은 에러가 발생합니다.
: : [C++ Error] MailMain.cpp(149): E2285 Could not find a match for 'TIdAttachment::TIdAttachment(TIdMessagePart *,AnsiString)'
: : 빌더사용한지도 별로 안되고 씨++도 익숙하지가 못해서 도저히 해결 방법을 모르겠네요...
: :
: :
: :
: : 윤구 님이 쓰신 글 :
: : :
: : : ListBox1.Items.Add( TIdAttachment( IdMsg.MessageParts.Items[i] ).FileName ) ,
: : :
: : : TStringList( TIdText( IdMsg.MessageParts.Items[i] ).Body ).SaveToFile(ExtractFilePath(Application.ExeName) + 'tempmail.htm');
: : :
: : :
: : : 위에 있는 두개가 델파이에서 있는 소스인데요 저걸 빌더에서 어떤식으로 해주어야 할지 잘 모르겠습니다.
: : : 약간만 바꾸어서 TStringList( TIdText( IdMessage1.MessageParts.Items[i])->Body ).SaveToFile(ExtractFilePath(Application->ExeName) + "tempmail.htm");
: : : 이렇게 하면 [C++ Error] MailMain.cpp(154): E2459 VCL style classes must be constructed using operator new 이런 에러가 발생합니다.
: : :
: : : 그래서 변수로 선언해서 사용하려고 아래처럼 바꿔서 해보면
: : :
: : : TIdText *IdText(IdMessage1->MessageParts->Items[i]);
: : :
: : : [C++ Error] MailMain.cpp(149): E2031 Cannot cast from 'TIdMessagePart *' to 'TIdText'
: : : [C++ Error] MailMain.cpp(149): E2285 Could not find a match for 'TIdText::TIdText(TIdMessagePart *)'
: : : 두개의 에러가 발생합니다....
: : : 제 생각에는 IdText클래스에 저런 생성자가 없어서 나는 에러 같은데...그럼 인자 없이 만들고
: : : TIdText *IdText;
: : : IdText가 가지는 어떤 값에다가 IdMessage1->MessageParts->Items[i]이걸 넣어주면 될거 같은데
: : : 도움말을 봐도 어떻게 해야 하는지 모르겠습니다.
: : :
: : : TIdAttachment에서도 비슷한 이유로 에러가 나서 해결을 못하고 있습니다.
: : : TIdText,TIdAttachment 이 두개를 어떻게 사용을 해야 하는지 알려주세요.
: : :
: : :

+ -

관련 글 리스트
19087 인디이용한 메일 클라이언트 만들기. 윤구 1452 2002/06/03
30088     Re:인디이용한 메일 클라이언트 만들기.  구 1052 2002/06/03
19092     해결됐습니다.ㅋㅋㅋ 윤구 1389 2002/06/04
55375         Re:해결됐습니다.ㅋㅋㅋ Sexyguy™*^^* 2516 2008/12/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.