Q&A

  • 초보자입니다. timer 로 일정시간에 반복실행하려고합니다
소스 일정 부분입니다.

0.5초 혹은 1초 주기로 5번 만 딱  반복 실행하려고 합니다.

실행하려는 부분은 RM_MAGSTRUCK 부분이구요

원본은

function TMagicManager.MagBigExplosion(BaseObject: TBaseObject; nPower, nX,
nY: Integer; nRage: Integer): Boolean;
var
  I                :Integer;
  BaseObjectList   :TList;
  TargeTBaseObject :TBaseObject;
begin
  Result         := False;
  BaseObjectList := TList.Create;
  BaseObject.GetMapBaseObjects(BaseObject.m_PEnvir,nX,nY,nRage,BaseObjectList);
    if not BaseObject.m_boOnHorse then begin
  for I := 0 to BaseObjectList.Count - 1 do begin
    TargeTBaseObject:=TBaseObject(BaseObjectList.Items[i]);
    if BaseObject.IsProperTarget(TargeTBaseObject) then begin
      BaseObject.SetTargetCreat(TargeTBaseObject);
      TargeTBaseObject.SendMsg(BaseObject,RM_MAGSTRUCK,0,nPower,0,0,'');
      Result:=True;
    end;
  end;
  BaseObjectList.Free;
end;
end;





  
입니다. 이상태에서 timer를 이용하여 했으나 안돼더군요... 무엇이 잘못된거죠?

아래 있는 소스가 위의 소스에서 timer 을 추가하것입니다.~






function TMagicManager.MagBigExplosion(BaseObject: TBaseObject; nPower, nX,
nY: Integer; nRage: Integer): Boolean;
var
  I                :Integer;
  BaseObjectList   :TList;
  TargeTBaseObject :TBaseObject;
  interval, mode : integer;
begin
  Result         := False;
  BaseObjectList := TList.Create;
  BaseObject.GetMapBaseObjects(BaseObject.m_PEnvir,nX,nY,nRage,BaseObjectList);
  timer1.Enabled := true;
    if BaseObject.IsProperTarget(TargeTBaseObject) then begin
      BaseObject.SetTargetCreat(TargeTBaseObject);
  if (mode <> 1) and (mode <> 2) and (mode <> 3) and (mode <> 4) and (mode <> 5) then mode := 1;
  case Mode of
1 :
  begin
timer1.interval := 500;
      TargeTBaseObject.SendMsg(BaseObject,RM_MAGSTRUCK,0,nPower,0,0,'');
      mode := 1;
end;
2 :
begin
timer1.interval := 1000;
      TargeTBaseObject.SendMsg(BaseObject,RM_MAGSTRUCK,0,nPower,0,0,'');
      mode := 2;
end;
3 :
begin
timer1.interval := 1500;
      TargeTBaseObject.SendMsg(BaseObject,RM_MAGSTRUCK,0,nPower,0,0,'');
      mode := 3;
end;
4 :
begin
timer1.interval := 2000;
      TargeTBaseObject.SendMsg(BaseObject,RM_MAGSTRUCK,0,nPower,0,0,'');
      mode := 4;
end;
5 :
begin
timer1.interval := 2500;
      TargeTBaseObject.SendMsg(BaseObject,RM_MAGSTRUCK,0,nPower,0,0,'');
      mode := 5;
timer1.Enabled := false;
      end;
end;
end;
end;



도와주세요~
1  COMMENTS
  • Profile
    이정욱 2008.01.03 19:17
    mode 가 안변하게 되어있네요... 1일때 다시 1을 넣어버리시니.. 계속 1만 타게 될듯 하네요.
    아래처럼 수정하면..어떨까요?

    function TMagicManager.MagBigExplosion(BaseObject: TBaseObject; nPower, nX,
    nY: Integer; nRage: Integer): Boolean;
    var
      I                :Integer;
      BaseObjectList   :TList;
      TargeTBaseObject :TBaseObject;
      interval, mode : integer;
    begin
      Result         := False;
      BaseObjectList := TList.Create;
      BaseObject.GetMapBaseObjects(BaseObject.m_PEnvir,nX,nY,nRage,BaseObjectList);
      timer1.Enabled := true;
        if BaseObject.IsProperTarget(TargeTBaseObject) then begin
          BaseObject.SetTargetCreat(TargeTBaseObject);

    if (mode <> 1) and (mode <> 2) and (mode <> 3) and (mode <> 4) and (mode <> 5) then mode := 1;

      case Mode of
    1 :
      begin
    timer1.interval := 500;
          TargeTBaseObject.SendMsg(BaseObject,RM_MAGSTRUCK,0,nPower,0,0,'');
          mode := 2;
    end;
    2 :
    begin
    timer1.interval := 1000;
          TargeTBaseObject.SendMsg(BaseObject,RM_MAGSTRUCK,0,nPower,0,0,'');
          mode := 3;
    end;
    3 :
    begin
    timer1.interval := 1500;
          TargeTBaseObject.SendMsg(BaseObject,RM_MAGSTRUCK,0,nPower,0,0,'');
          mode := 4;
    end;
    4 :
    begin
    timer1.interval := 2000;
          TargeTBaseObject.SendMsg(BaseObject,RM_MAGSTRUCK,0,nPower,0,0,'');
          mode := 5;
    end;
    5 :
    begin
    timer1.interval := 2500;
          TargeTBaseObject.SendMsg(BaseObject,RM_MAGSTRUCK,0,nPower,0,0,'');
          mode := 1; //다시 1로 바꾸기...
    timer1.Enabled := false;
          end;
    end;
    end;
    end;

    • 김기범
    • 2008.01.07 20:16
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 내공쌓기
      2008.01.05 16:13
      해결하였습니다..ㅠ_ㅠ 문제는 쓰레드로 설정했을때 contenttype에 기존의 헤더가 붙어버리더군요...
    • 정경철
    • 2008.01.05 08:58
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 델코초
      2008.01.17 19:49
      Baud Rate가 맞는지 일단 확인 권장 합니다. Rate 가 다를경우 원치 않는 데이타가 올 수 있더군요. ...
    • 멘토링
    • 2008.01.05 02:31
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2008.01.08 03:23
      제가 좀 작성해서 도와드리려 하다가 예전에 안영기님이 작성하신 코드가 생각나서 안영기님의 홈피를 ...
    • 강성철
    • 2008.01.05 01:35
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.01.05 05:23
      아래와 같은 형식으로 하시면...안될것 같구요.. DB를 사용하기 직전에 하시고, 사용 완료후 하시는게 ...
    • 강성철
      2008.01.07 18:35
      문제 해결했습니다 ^^ 감사합니다.. 근데여 ... 쓰레드 돌리니까 소켓 10053 에러 나여 ㅡㅜ 요건 ...
    • 손형기
    • 2008.01.05 01:24
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 정형준
      2008.01.05 02:19
      예 결론적으로 가능 합니다. 그런데... 업무의 내용 (=데이타의 내용)에 따라 업로드가 무척 까다로워...
    • 장래혁
    • 2008.01.04 02:21
    • 2 COMMENTS
    • /
    • 0 LIKES
    • minsic
      2008.01.04 03:42
      "[Fatal Error] AdvGrid.pas(43): Unit AsgHTMLE was compiled with a different version of PictureContai...
    • 장래혁
      2008.01.04 19:19
      지금 사용하고 있는 버전이 델파이 7입니다. TMS를 몇번이고 컴파일해서 깔아보아도 저 메시지가 ...
    • 김진
    • 2008.01.03 13:34
    • 0 COMMENTS
    • /
    • 0 LIKES
    • Marek
      2008.01.04 09:10
      안녕하세요 님께서 문의하신 .ib는 Version이 인터베이스 7.0을 포함한 이후 Version입니다. 따라서 인...
    • 유형곤
      2008.01.07 20:56
      감사합니다. 한가지만 더 여쭐께요. 인터베이스 7.0은 어디서 구하나요? 5.5가 델파이5.0에 같이 탑재...
    • 박우성
    • 2008.01.02 07:57
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.01.03 19:17
      mode 가 안변하게 되어있네요... 1일때 다시 1을 넣어버리시니.. 계속 1만 타게 될듯 하네요. 아래처럼 수...
    • 박철호
    • 2008.01.01 12:54
    • 2 COMMENTS
    • /
    • 0 LIKES
    • bluehill
      2008.01.08 01:00
      저는 graphicex서고를 쓰는데 프리웨어이고 거의 모든 포맷을 다 엽니다. 단지 포맷별로 보관은 해보지 못...
    • 이정욱
      2008.01.01 18:01
      Tif 는 델파이에서 지원되는 기본 이미지 포맷이 아닙니다. 제3자 라이브러리를 이용하셔야 합니다. ...
    • 발걸음
    • 2007.12.31 22:56
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.01.01 08:35
      이제 익히시는것이라면 델파이 2007 로 익히시면 유리하실 겁니다. ^^ 7 에서 2007 로 가면서 약간의 ID...
    • 김길현
    • 2007.12.31 16:01
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김길현
      2008.01.01 01:17
      궁시렁궁스렁 하다가 알게 되네요. 컴포넌트(HTTPRIO)가 제공을 해주고 있더군요. HTTPRIO &...
    • 하영애
    • 2007.12.30 19:35
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2007.12.31 09:09
      델파이 관련 문의는 아니신것 같네요 ㅋ 아마 부팅하면 네트웍으로 뭔가 하는 일이 있는 프로그램을 깔...
    • 우소
    • 2007.12.29 02:43
    • 0 COMMENTS
    • /
    • 0 LIKES
    • djha21
    • 2007.12.28 03:58
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.01.12 08:22
      델마당의 황재민님의 글에서 가져왔습니다. ^^ <!--CodeS--> Procedure SaveStringsAsUnicode( c...
    • 김상진
    • 2007.12.27 20:46
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2007.12.30 21:57
      델파이에서는 문자 와 숫자의 구분이 명확해야 합니다. 문자변수에는 문자, 숫자형 변수에는 숫자만 넣...
    • 스터디
    • 2007.12.27 23:26
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김춘경
      2007.12.28 07:41
      퀵레포트의 프로퍼티 중에 Page->Columns가 있습니다. 여기에 출력하고자 하는 컬럼수를 넣으시면 됩니...