|
전체 코드가 어떻게 되어있는지 몰라서 뭐라 단정하여 말씀 드리기가 힘드네요.
코드는 정직합니다. 어딘가 문제가 있을 것이니 다시한번 차근차근 찾아보세요.
자신이 예상한 것과 어떻게 차차이가 나는지 디버깅 메시지를 뿌려 가면서
하나하나 찾으면 문제점을 찾을 수 있을 겁니다.
특별한 기술이 필요한것이 아닌것 같으니 디버깅 능력을 좀 키운다는 맘으로
다시 한 번 힘 내시길~
궁금이 님이 쓰신 글 :
: for (int i = 0; i < AVMtxOutCnt; i++){
: if (InCnt[i] == AVMtxInCnt || CurCntScan[i] == CntScan[i]) { InCnt[i] = 0; CurCntScan[i] = 0; }
: for (int j = InCnt[i]; j < AVMtxInCnt; j++){
: if (CheckScanList[i][j] == true) {
: ScanInNo[i]=j+1;
: InCnt[i]++;
: CurCntScan[i]++;
: break;
: }
: }
: }
: 처음 했던건 송신영님이 말해주신 것 처럼 위와 같았는데
: 역시 처음 ScanInNo[0] 값은 하나씩 증가되면서 체크된 곳을 잘 찼는데 ScanInNo[1] ~[15] 까지는 라인에서
: 처음 체크된 곳 말고는 더이상 찿질 못합니다 ㅜㅜ
:
:
: 송신영 님이 쓰신 글 :
: : 뭔가 생각을 잘못하신것 같습니다.
: : 님께서 작성하신 코드로는 아래와같은 위치만 검색됩니다.
: : (위치가 정확한것은 아니나 한칸씩 밀리며 한줄에 하나만 검색함)
: :
: : [v][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
: : [ ][v][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
: : [ ][ ][v][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
: : [ ][ ][ ][v][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
: : [ ][ ][ ][ ][v][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
: : [ ][ ][ ][ ][ ][v][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
: : [ ][ ][ ][ ][ ][ ][v][ ][ ][ ][ ][ ][ ][ ][ ][ ]
: : [ ][ ][ ][ ][ ][ ][ ][v][ ][ ][ ][ ][ ][ ][ ][ ]
: :
: : 8 x 16 구조라면 모든 곳을 검색하기 위해서는 for 문을 중복해서 2개를 사용해야합니다.
: :
: : for(){ // Line 반복
: : for(){ // 한 라인의 모든 칸 반복.
: : // 조건을 줘서 체크된것 확인.
: : }
: : }
: :
: :
: : 궁금이 님이 쓰신 글 :
: : : CheckScanList[0~7][0~15] check 박스 수열을 만들어서 체크 박스에 체크는 제대로 됩니다
: : : scan 버튼을 누르면
: : : -------------------------------------------------------------------------
: : : CheckScanList[0] 에 16 개중 체크된 맨처음것의 값 (아무것도 체크 안되있으면 0으로 인식)
: : : CheckScanList[1] 에 16 개중 체크된 맨처음것의 값
: : : CheckScanList[2] 에 16 개중 체크된 맨처음것의 값
: : : .
: : : ...
: : : CheckScanList[6] 에 16 개중 체크된 맨처음것의 값
: : : CheckScanList[7] 에 16 개중 체크된 맨처음것의 값 이렇게 16개의 값을 구한뒤 전송
: : : -------------------------------------------------------------------------
: : :
: : : CheckScanList[0] 에 16 개중 체크된 그 다음 체크된 값
: : : CheckScanList[1] 에 16 개중 체크된 그 다음 체크된 값
: : : CheckScanList[2] 에 16 개중 체크된 그 다음 체크된 값
: : : .
: : : ...
: : : CheckScanList[6] 에 16 개중 체크된 그 다음 체크된 값
: : : CheckScanList[7] 에 16 개중 체크된 그 다음 체크된 값 이렇게 16개의 값을 구한뒤 전송
: : : -------------------------------------------------------------------------
: : : 16 까지 체크한뒤 다시 처음에 체크된 값 16개를 전송
: : :
: : :
: : :
: : : void __fastcall TFormMtx::TimerScanTimer(TObject *Sender)
: : : {
: : :
: : : for (int i = 0; i < OutCnt; ++i) {
: : : ++CurScanInNo[i];
: : : if (CurScanInNo[i] >= InCnt || CurCntScan[i] == CntScan[i]) {CurScanInNo[i] = 0; CurCntScan[i] = 0;}
: : : <--- 카운트가 16보다 커지면 다시 0으로,, 체크된 모든 갯수를 세서 모두 체크했으면 다시 처음으로
: : : if (CheckScanList[i][CurScanInNo[i]] == true){ <-- 체크박스 체크되면 값 얻기
: : : ScanInNo[i] = CurScanInNo[i]+1;
: : : CurCntScan[i]++;
: : : }
: : : }
: : :
: : : Send(ScanInNo[0], ScanInNo[1], ScanInNo[2], ScanInNo[3], ScanInNo[4], ScanInNo[5], ScanInNo[6], ScanInNo[7]); <-- 전송
: : : }
: : :
: : : ScanInNo[0] 의 값은 잘 들어와지는데 그 뒤 ScanInNo[1]~ScanInNo[7] 까지는 값들이 들어왔다 안들어왔다 들쑥 날쑥 하네요,,, ㅜㅜ
: : :
: : : Timer 안에서 for이 잘 안되서 그런건지 해서
: : : for 문이 아니라 직접 쭉 늘어놓아도 이상하게 그 뒤에 것들은 값을 잘 못찾아요 ㅜㅜ
: : :
: : : 질문이 너무 두서없어서 답글이 달릴까 걱정스럽네요,,
: : : 간단하게 생각했다 아주 하루종일 퇴근도 못하고 미치겠네요
: : : 도와주세요~
|