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
[44403] Re:Re:Re:궁금한게.... ^^
zepirox [zepirox] 1183 읽음    2006-04-06 09:04
제가 작성중인 프로그램은 항상 File을 첨부해주는 기능이 요구되었죠.
그래서 File을 보낼때만, Progress로 보여주면 되는 거였습니다.
물론 Message 내용도 많으면 추가가 되어야 겠죠...
File크기가 보통 5~10MB정도입니다.

원론적으론 일종의 꽁수인데요.. ^^

ICS에서 제공되는 예제중 MailSnd 코드를 보니,
OnDisplay Event에서 Base64로 인코딩 된 데이트를 전송할때마다 발생시키는것 같더군요.
그래서 전체 File의 크기를 구한후 이 File을 인코딩하면 ((FileSize+MessgaeSize)/3)*4 의 크기로 인코딩 될테고,
이 인코딩 된값을 OnDisplay Event에서는 한 라인을 보낼때마다 발생되는걸 확인했습니다.
한 라인이 72Byte이니, (FileSize/3)*4 을 72로 나눈값을 ProgressBar->MaxValue에 대입했습니다.
당근 증가시켜주는 부분은 OnDisplay Evnet에 작성했구요.
여담으로 OnDisplay에는 서버랑 통신시 나오는 모든 값들이 Msg로 넘어오더군요.
FileSize나 MessageSize가 클 경우에는 서버 통신 결과값들은 ProgressBar에 표시하지않아도 될만큼
작은 값이더군요.

즉 MaxValue가 30000 이라하면, 서버통신에 대한 결과값들에 대한 MaxValue는 10 정도밖에 되지 않다는 거죠...
이것들도 반영 시키려면, MaxValue에 10을 더해주면 될거구요...

이상 Zepirox의 꽁수 였습니다. ㅋㅋㅋ ^^

그럼 좋은 하루 되시길 바랍니다.


P.S
컴포넌트 자료실에 보면 임프님께서 ICS (2004년 버전인가) 올리신게 있는데.. SSL도 지원을 한다고 말씀하셨던거
같은데.. ICS에서 SSL을 사용할려면 어떻게 해야 하나요?
Overbyte 홈에서 보면... 뭐 개발에 참가하라구 나오는것 같던데요...
혹시 가능하다면, 간단한 예제코드나 사용방법 좀 부탁드립니다. ^^



박지훈.임프 님이 쓰신 글 :
: ICS에서는 내부 소켓을 통해 데이터를 전송할 때, 얼마만큼 전송될 때마다 발생하는 이벤트가 없습니다.
: 찾아보진 않았지만 인디도 그럴 겁니다.
:
: 그런데 전송 이벤트가 없는데 ProgressBar->Prorgress를 증가시키는 부분은 어떻게 구현하셨는지 궁금하네요.
: 저는 따로 꽁수를 썼습니다만...
:
:
: zepirox 님이 쓰신 글 :
: : 해당 ICS 홈페이지 FAQ란에 내용이 있네요....
: : 간편하게 Base64 Encoding후 데이터를 계산하는 방법등이 나와있네요..
: : 간단하게 만들어서 해보니... 대충 맞는것 같네요..
: :
: : 아래는 내용입니다.
: :
: : Message size
: : Various    
: : 21/07/2001 
: :
: : > I would like to be able to get an accurate size of a message before sending,
: : > and then be able to provide progress as it is sending. The problem I am
: : > having is the Base64 encoding I believe. Whenever there is an attachment,
: : > the data sent is greater than the actual sizes of the
: : > Files + MailMessage + Headers
: :
: : Answer 1:
: :  A small test on an attachment that I did, shows that the original data has a length of 60 and the encoded Base64 data  has a length  of 80. Said another way, the encoding process expands the data by 1/3 and the decoding process shrinks the data by 1/4.
: :
: : Answer 2:
: :  A couple of small points to add to this, depending on how accurate you  need  to be:
: :
: :  Each three bytes of raw data encodes to 4 bytes of base64.  If the  total length of your raw data is not an exact multiple of three, you need to round  the  calculation up.  Thus 12 raw bytes equals 16 coded bytes;  13, 14, or 15 raw bytes all equate to 20 coded bytes.
: :
: :  If you use a line-based protocol to transmit the data (NNTP, Pop3 or  whatever), then each line includes an additional CRLF pair.  So you'd need to add  (2 * linecount) to the byte-count as calculated above. 
: :
: : http://users.pandora.be/sonal.nv/ics/faq/Frame_index.html
: :
: :
: : zepirox 님이 쓰신 글 :
: : : 안녕하세요.
: : :
: : : 간단한 메일 전송 프로그램을 만들고 있는데요..
: : : ICS Component를 사용해서 만들고 있습니다.
: : :
: : : ICS Component 메일을 전송하는것까지는 됩니다.
: : : 근데 이 메일 보내는 단계를 Progress Bar로 보여 주고 싶단거죠..
: : :
: : : FlatStyle의 TFlatGauge를 사용할려고 하는데요....
: : :
: : : ProgressBar->MaxValue=
: : : ......
: : : .....
: : : ProgressBar->Prorgress++;
: : : ....
: : : ...
: : :
: : :
: : : 로 하고 있습니다.
: : :
: : : 근데 저기 MaxValue에 값을 넣어야 하는데, 그 값 구하는 법을 ICS에서는 모르겠네요..
: : :
: : : 소켓에다가 데이터를 보내고 넣는데...
: : :
: : : 현재 Email Data의(Base64 Encoding으로 했습니다)크기를 넣고 전송하는 버퍼 크기로 나눈값을 넣으면 될것도 같은데...파일 첨부가 있을경우에는 Encoding되고 난이후의 크기를 전혀 모르겠네요..
: : : 게시판 찾아보면, NMFTP인가..하는 ByteTotal 같은 프로퍼티도 없구요...
: : : 비슷한 예제나, 해결 방법 제시 부탁드립니다.
: : :
: : : 감사합니다.

+ -

관련 글 리스트
44376 [질문] ICS Component에 대한 질문입니다. zepirox 978 2006/04/04
44396     Re:[자답] ICS Component에 대한 질문입니다. zepirox 989 2006/04/05
44397         Re:Re:궁금한게.... ^^ 박지훈.임프 937 2006/04/05
44403             Re:Re:Re:궁금한게.... ^^ zepirox 1183 2006/04/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.