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
[10326] Re:DB관련하여 궁금한게 있습니다.
최보현.U&I [uriduri] 937 읽음    2001-08-27 20:05
유엔아이 현입니다.

Borlndmm.dll 이문제라고 에러 메세지가 뜬다면 ... 메모리 관리가 잘못 되었다는 야그 입니다.

메모리 부분을 잘 살펴보세요~~~~`

일단 제가 의심 가는 부분을 밑에 글에 직접 수정을 ....

배현 님이 쓰신 글 :
: 고수님들의 도움이 필요합니다.
: 코딩엔 잼뱅이라서 사소한 것에서 막히네요
: DB에서 TDatabase랑 TTable을 이용해서 Text파일에 있는 데이터를
: 매분마다 읽어서 DB에 저장을 하려고 합니다.
: 근데 코딩엔 별 문제가 없는 것 같은데 EAccessViolation에러가 나네요
: Borlndmm.dll파일이 문제가 있다고 하는데 무엇이 문제인지 못찾겠어요
: 처음 몇분간은 문제없이 저장이 되다가 시간이 좀 지나면 이런 에러메세지가 뜨네요..
: 도움의 손길이 간절합니다..
: 꼭 답변 부탁드리겠습니다.
: 참고로 코드를 올립니다.
:
: void TForm1::Write_2_DB(void)
: {
:   int FileHandle;
:   int FileLength;
:   int BytesRead;
:   int i, j, k, l, m, n;
:   char seps[]=" ,\t\n";

:   char *token;
:   char *pszBuffer;
:   double *data;
==> 일단 요넘 셋이가 포인터니깐 .... 메모리 문제를 일으킬 가는성이 .........
   
:
: // ------------------------------------------------
: //            Open File and Reading File
: // ------------------------------------------------
:
:   char const *Path ="D:\\sbr\\state_set.txt";
:
:   try
:     {
:     FileHandle = FileOpen(Path, fmOpenRead);
:     FileLength = FileSeek(FileHandle,0,2);
:     FileSeek(FileHandle,0,0);
:     pszBuffer = new char[FileLength+1];
:     BytesRead = FileRead(FileHandle, pszBuffer, FileLength);
:     FileClose(FileHandle);
:     }
:   catch(...)
:     {
:     Application->MessageBox("Can't open the file","File Error",IDOK);
:     }
:
: // -------------------------------------------------
: //               Divided Data Storing
: // -------------------------------------------------
:
:   token=strtok(pszBuffer, seps);
:   data=new double[51];
==>  메모리 할당만 하구 해제 하는 부분을 찾을 수가 없네요~~~~~~~~~~
:
:
:   for (i=0;i<51;i++)//BytesRead
:     {
:     data[i]=atof(token);
:     token=strtok(NULL,seps);
:     if (token==NULL) break;
:     }
:   delete [] pszBuffer;

==> delete pszBuffer;    이렇게 하셔야 할걸요~~~~~~

:
:   Table2->First();
:   Table2->Edit();
:   for (i=0;i<Table2->FieldCount;i++)
:   {
:      if (i<2)
:      {
:          Table2->Fields->Fields[i]->AsInteger=data[i];
:      }
:      else if (i==2)
:      {
:         Table2->Fields->Fields[i]->AsFloat=data[i];
:      }
:      else if (i>3)
:      {
:           Table2->Fields->Fields[i]->AsInteger=data[i];
:      }   
:   }
:   Table2->Post();
==> delete data;  메모리 해제가 필요 하겠죠~~~~~~~~~
: }
: //---------------------------------------------------------------------------
:

+ -

관련 글 리스트
10324 DB관련하여 궁금한게 있습니다. 배현 904 2001/08/27
10326     Re:DB관련하여 궁금한게 있습니다. 최보현.U&I 937 2001/08/27
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.