|
설현도 님이 쓰신 글 :
: [타이머 동작으로 100ms 마다 한번씩 해당 작업을 수행하고 싶다] 라는 말씀이시죠?
:
: 1. if - else문 제거
:
: 현재 소스를 보면 label이 다수 존재 합니다.
: 그리고 수행 동작들은 모두 동일합니다.
:
: label 안의 내용만 틀리다면 이 label 들을 배열로 선언합니다.
:
: [.h 파일]
: TLabel *lbl[10]; // 10개로 가정 하겠습니다.
:
: [.cpp 파일]
: 그리고 OnCreate()나 OnShow()에서
: lb[0] = Label1; ...... lbl[10] = Label10;
: 으로 좍~~~ 선언을 합니다.
:
: 그럼 타이머 안에서의 함수는
: if(lbl[index]->Caption!="0.0.0.0")
: {
: ... //
: }
: index += 1;
:
: 으로 수행 하면 될 것 같습니다.
: index 관리는 따로 해주셔야 되구요
:
: 번외편 님이 쓰신 글 :
: : 궁금한게 많아서여;;; 오늘도 질문좀 하려고 합니다.
: : 동작하는데는 크게 문제가 없는데 왠지 타이머를 많이 쓰면 안될거 같아서요
: : 아래처럼 cmd를 실행하려고 하는데 cmd모드를 너무 빨리 실행시켜서인지는 잘 모르겠지만
: : 가끔 route.exe 응용프로그램 오류가 뜹니다.
: : 그래서 timer로 두개를 나누었더니 해결이 되더군여 그런데 문제는 밑에 if문이 한두개가
: : 아니라 여러개가 있어서요.. timer 갯수만 늘려서 해결하려니 해결하는 방법이 어려운게 아니라
: : 왠지 쫌 꺼림찍하더라구여...
: :
: : 그래서 질문드립니다. 위쪽 if문이랑 아래쪽 if문이랑 다른 타이머나 통신포트쪽에 지장주지 않고
: : 0.1초의 시간을 줄수 있는 방법이 없을까여? 물론 timer 여러개로 사용하는거 빼구여
: : 좋은 방법좀 알려주셨으면 합니다.
: :
: : 그럼 이만..
: :
: :
: : if(Label10->Caption!="0.0.0.0")
: : {
: : sprintf(cmd_0,"route add 0.0.0.0 mask 0.0.0.0 %s metric 4",Label10->Caption);
: : STARTUPINFO si3;
: : PROCESS_INFORMATION pi3;
: : ZeroMemory( &si3, sizeof(si3) );
: : si3.cb = sizeof(si3);
: : CreateProcess( NULL, cmd_0, NULL, NULL, FALSE, DETACHED_PROCESS, NULL, NULL, &si3, &pi3 );
: : }
: :
: : if(Label11->Caption!="0.0.0.0")
: : {
: :
: : char *addr1 = Label11->Caption.c_str();
: : long addrVal = inet_addr(addr1);
: :
: : IN_ADDR temp;
: : temp.s_addr = (addrVal & maskVal) | addVal;
: : sprintf(cmd_1,"route add 0.0.0.0 mask 0.0.0.0 %s metric 3",inet_ntoa(temp));
: : STARTUPINFO si4;
: : PROCESS_INFORMATION pi4;
: : ZeroMemory( &si4, sizeof(si4) );
: : si4.cb = sizeof(si4);
: : CreateProcess( NULL, cmd_1, NULL, NULL, FALSE, DETACHED_PROCESS, NULL, NULL, &si4, &pi4 );
: : }
|