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
[67126] Re:Re:스레드에서 파일 저장 하는법 질문드려요
성웅 [] 1188 읽음    2012-05-04 16:54
답변 감사합니다.

filename을 thread에 넘기고 thread에서는 저장하라고 하셨는데요
아래 소스처럼 form6에 버튼을 하나 만들어서, 저장하는 창을 띄우기까진 했습니다.

그런데 "test_thread1 = new Tthread_note1; "을 선언함으로써
쓰레드 동작이 시작되는데, 파일이름을 어떻게 넘기는지요..
그리고 쓰레드에서 파일이름을 받아 어떤식으로 저장되는지도 궁금합니다..

---------------form6.h------------------------------
TStringList* srcFile = new TStringList;
TStringList* srcData = new TStringList;
---------------form6.cpp----------------------------
void __fastcall TForm6::Button2Click(TObject *Sender)
{// Save compsnsated data

  if(SaveDialog1->Execute()){
   test_thread1 = new Tthread_note1; // 쓰레드에서 파일저장 시작
  }

  while(stay_state);// 쓰레드에서 파일저장이 완료되면 탈출

  srcFileq->SaveToFile(SaveDialog1->FileName);
  
  delete srcDataq;
  delete srcFileq;
}
-------------thread1.cpp----------------------------
void __fastcall Tthread_note1::Execute()
{
  stay_state=1;
                for(int i=0; i<100; i++){
                    srcDataq->Add(save_data[i][0]);
                }
                srcFileq->Add(srcDataq->CommaText);

                for(int j=1; j<50; j++){
                    for(int i=0; i<100; i++){
                        srcDataq->Strings[i] = save_data[i][j];
                    }
                    srcFileq->Add(srcDataq->CommaText);
                }
 stay_state=0;
}


장성호 님이 쓰신 글 :
: Application->ProcessMessages(); 는 쓸데 없으니까  빼시구요
:
: Dialog컴포넌트를 비롯하여 모든 GUI객체는 MainThread(GUI-Thead)에서만 접근해야합니다.
:
: 쓰레드에서 Execute를 호출해서 Dialog를 띄우는것은 제대로 동작하지 않습니다.
:
:
:
:
: 사용자 에게 파일명 입력이 필요하면 gui-thead에서 받아서
:
: filename을 thread에 넘겨 thread에서는 저장만 하세요
:
: 그럼..
:
: 성웅 님이 쓰신 글 :
: : 멀티스레드를 이용해서 파일저장 속도를 높이고 싶은데요
: : 일단은 스레드 한개로 파일만 저장하는 방법을 찾고 있습니다.
: :
: : 아래 소스처럼 dialog상에서 저장하는 방법을 스레드상에 그대로 적용하였더니 안되네요..
: : 혹시, 스레드상에서 파일을 저장하는법 아시는분 답변 부탁드립니다(__)
: :
: :
: :
: : void __fastcall Tthread_note1::Execute()
: : {
: :   TStringList* srcFile = new TStringList;
: :   TStringList* srcData = new TStringList;
: : 
: :    if(SaveDialog1->Execute()){
: : 
: :                 for(int i=0; i<100; i++){
: :                     srcData->Add(save_data[i][0]);
: :                 }
: :                 srcFile->Add(srcData->CommaText);
: : 
: :                 for(int j=1; j<50; j++){
: :                     Application->ProcessMessages();
: :                     for(int i=0; i<100; i++){
: :                         srcData->Strings[i] = save_data[i][j];
: :                     }
: :                     srcFile->Add(srcData->CommaText);
: :                 }
: :     }            
: :    srcFile->SaveToFile(SaveDialog1->FileName);
: :  
: :    delete srcData;
: :    delete srcFile;
: : 
: : }
: : 

+ -

관련 글 리스트
67123 스레드에서 파일 저장 하는법 질문드려요 성웅 951 2012/05/04
67124     Re:스레드에서 파일 저장 하는법 질문드려요 장성호 1173 2012/05/04
67126         Re:Re:스레드에서 파일 저장 하는법 질문드려요 성웅 1188 2012/05/04
67129             Re:Re:Re:스레드에서 파일 저장 하는법 질문드려요 Intotheblue 1023 2012/05/04
67134                 Re:Re:Re:Re:스레드에서 파일 저장 하는법 질문드려요 성웅 970 2012/05/04
67137                     Re:Re:Re:Re:Re:[자답]스레드에서 파일 저장 하는법 질문드려요 성웅 1159 2012/05/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.