|
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 문이 아니라 직접 쭉 늘어놓아도 이상하게 그 뒤에 것들은 값을 잘 못찾아요 ㅜㅜ
: :
: : 질문이 너무 두서없어서 답글이 달릴까 걱정스럽네요,,
: : 간단하게 생각했다 아주 하루종일 퇴근도 못하고 미치겠네요
: : 도와주세요~
|