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
[17243] Re:[질문] 쓰레드와 프로그래스바에 대하여?
Falco [falco] 1356 읽음    2002-04-05 21:43
IproveGenNetList->ProgressBar->Position = (TProgressRange)((total_read_size/total_file_size)*100);
이 부분이 이상하군요.

항상 값이 0이 나올꺼 같은데요?  계속 0이니까 안 움직이는거 아닌가요?

파일 전체 크기를 구해와서 lproveGenNetList->ProgressBar->Max = total_file_size; 로 주어 놓고

Update(); 에서는
lproveGenNetList->ProgressBar->Position = total_read_size;
로 하시면 지가 알아서 100분율로 표현 해 주니까 굳이 Position에 백분율로 계산해서 넣지 않아도 됩니다.

한번 점검 해 보시길... 

그리고, 잘 된다면 IproveGenNetList->ProgressBar->Update(); 이 부분은 필요 없을것 같은데요?

민인학 님이 쓰신 글 :
: 안녕하세요..
: 제가 이번에 파일복사시에...
: progress bar를 보여줄려 하는데...
: 아래와 같이 짰습니다..
: 근데.. 이상하게도.. 파일은 복사하고 있는데...
: 프로그래스바가 움직이질 않네요...
: 제가 뭘 잘못했나요?
: 부탁드립니다.
:
:
: <<<<<<<<<<<<<<<<<<<<<< thread.cpp >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
:
: // 쓰레드 입니다.
:
: void __fastcall EdifFileProgressThread::Update()
: {
:         IproveGenNetList->ProgressBar->Position = (TProgressRange)((total_read_size/total_file_size)*100);
:         IproveGenNetList->ProgressBar->Update();
: }
:
: void __fastcall EdifFileProgressThread::Execute()
: {
:         char ibuilder_dir[MAX_SIZE];
:
:         // open한 ipf파일위치에 ibuilder 디렉토리가 있는 검사후 없으면 만듬
:         sprintf( ibuilder_dir, "%sibuilder", ipfdir);
:         if (!DirectoryExists(ibuilder_dir))
:                 ForceDirectories(ibuilder_dir);
:
:         IproveGenNetList->ProgressBar->Position = 0;
:
:         // edif 파일들의 총 싸이즈를 알아냄(bytes)
:         vector<import_file_info>::iterator data;
:         for( data = ImportFilesInfo.begin(); data != ImportFilesInfo.end(); data++ ) {
:                 int handle;
:                 handle = open(data->EdifFile, O_RDONLY);
:                 total_file_size  = total_file_size + filelength(handle);
:         }
:
:         for( data = ImportFilesInfo.begin(); data != ImportFilesInfo.end(); data++ ) {
:                 char dest_file[MAX_SIZE];
:                 sprintf( dest_file, "%s\\%s", ibuilder_dir, ExtractFileName(data->EdifFile) );
:
:                 int in, out, bytes = 0;
:                 char block[1024];
:
:                 in = open(data->EdifFile, O_RDONLY);
:                 out = open(dest_file, O_WRONLY|O_CREAT,S_IREAD|S_IWRITE);
:                 while((bytes=read(in,block,sizeof(block)))>0) {
:                         char temp[MAX_SIZE];
:                         total_read_size+=bytes;
:                         write(out,block,bytes);
:                         Synchronize(Update);
:                 }
:         }
: }
:
:
:
: <<<<<<<<<<<<<<<<<<<<<<<<<<<<< main.cpp >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
:
: // 여기서 쓰레드를 호출합니다.
: void __fastcall TIproveGenNetList::FileCopy(TObject *sender)
: {
:         EdifCopyProgress = new EdifFileProgressThread(NULL);
:         EdifCopyProgress->Priority = tpTimeCritical;
:         EdifCopyProgress->Resume();
: }
:
:

+ -

관련 글 리스트
17227 [질문] 쓰레드와 프로그래스바에 대하여? 민인학 1100 2002/04/04
17243     Re:[질문] 쓰레드와 프로그래스바에 대하여? Falco 1356 2002/04/05
17240     Re:[질문] 쓰레드와 프로그래스바에 대하여? 유영인 [Chris] 1307 2002/04/05
17236     Re:[질문] 쓰레드와 프로그래스바에 대하여? 이경문 1188 2002/04/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.