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
[63334] accessviolation 문젠대요
알론소 [smire4454] 884 읽음    2010-12-23 11:00
밑에도 올렸지만
아무리해도 해결이 안되서요
도와주세요.ㅠㅠ

access violation 이 오류가 뜨는데
함수안에 함수안에 함수안에 try catch 이런문 써서
어느 함수가 문젠지 로그로 남기게해서 했는데

제딴에서는 로그남긴거보고 이함수에서 걸리는구나해서
고쳤는데 또 그러는거에요

그래서 또 찾아봤는데

now->second.m_pObject->Init();
여기서 걸리길래

now 같은경우  map iterator한거구요
m_pObject 는 객체구 Init()여기서 문제구나해서

Init()함수로 가서 또 try catch 써서 로그남기게해놨어요
그래서 걸리는 함수가 또 세개나있더라구요

그래서 그함수보니까
거긴 select해서 전역변수에 넣는거거든요 예를들어서
아래소스처럼

    String strSQL, DataName[STRING_CNT], strMsg, str_info;
    TStringList *StringList_TFDT;
    int j = 0;

    StringList_TFDT = new TStringList;
    StringList_TFDT->Clear();


    strSQL.sprintf("SELECT T1.TFDT_STAT                         FD_01  \
                   FROM VDS_TFDTSTAT T1, VDS_TFDT T2                   \
                   WHERE T1.TFDT_ID = T2.TFDT_ID AND T2.VDS_ID  = '%s' \
                   ORDER BY T2.TFDT_LANE ASC, T2.TFDT_ID ASC", tcdv_info.tcdv_id);


    DataName[0] = "FD_01";
    DataModule_DB->SelectSQL1(StringList_TFDT, strSQL, DataName, 1);

    try
    {
        if ( StringList_TFDT->Count )
        {
            for ( int i = 0; i < StringList_TFDT->Count; )
            {
                tcdv_stat.tfdt_stat[i].tfdt_stat  = StringList_TFDT->Strings[i].ToInt();
                tcdv_stat.tfdt_stat[i].itfdtstat = 1;
                i++;
            }  // end of for
        }  // end of if
        else
        {
            for(int i = 0; i < tcdv_stat.tfdt_cnt; i++)
             {
                tcdv_stat.tfdt_stat[j].tfdt_stat  = 1;
                tcdv_stat.tfdt_stat[j].itfdtstat = 0;
             }
        }
    }
    catch( Exception &e)
    {
        AnsiString error;
        error.sprintf("error : %s, %s",e.Message, tcdv_info.tcdv_id);
        AddMsg(error.c_str());
    }
//2010.12.02
    if(tcdv_stat.tfdt_cnt)
    {
        for(int i = 0; i < tcdv_stat.tfdt_cnt; i++)
        {
            if(tcdv_stat.tfdt_stat[i].itfdtstat == 0)
                SaveTFDTStat(i);
        }
    }

delete StringList_TFDT;


이런내용이거든요 근데 여기가문제라면 또 안에 try catch해서 로그남기게했으니까
여기 내용이떠야하는데 뜨지않구 Init()함수 에서 뜨니까..
exception 이 잘 못잡아준다그러는거알긴하는데
어떻게 이걸 찾아야할지모르겠고 소스를봐도 아이래서 문제겠지해서
조취를 취해도 도무지 모르겠더라구요 ㅠㅠ
진짜 저번주부터 계속 잡고있는데
이게 통신이 불안정하거나 이럴때 뜨는데 불안정하는경우가
별로 없잖아요 그리고 항상 새벽에 이렇게 떠서 어떻게해야할지모르는거에요
근데 이게 일어나는 시점이 통신이 끊어졌더라던지 아니면 불안정할때
떴거든요
좀 어떤 문제인지 조언이나 도와주세요.ㅠㅠ

+ -

관련 글 리스트
63334 accessviolation 문젠대요 알론소 884 2010/12/23
63337     Re:accessviolation 문젠대요 아제나 1068 2010/12/23
63343         Re:Re:accessviolation 문젠대요 알론소 1205 2010/12/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.