Q&A

  • for 루프 내의 프로시저 실행...
procedure TfmSelect.BtnOk_batClick(Sender: TObject);
var
  action : Integer;

begin
  for i := 1 to cnt_Row + cnt_b do   //그리드의 row 갯수만큼 돈다.
  begin
    if StringGrid1.Cells[0, i] = 'x' then
      begin action := 1; end
    else if StringGrid1.Cells[0, i] = 'UP' then
      begin action := 2; end
    else if StringGrid1.Cells[0, i] = '+' then
      begin action := 3; end
    else action := 4;

    case action of
      1    : Application.MessageBox('x', '확인' , mb_ok);
      2..3 : Application.MessageBox('+,UP', '확인' , mb_ok);
      4    : Application.MessageBox('no-select', '확인', mb_ok);
    end;    //CASE 끝.
  end;   //begin 끝.

end;

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

BtnOk_bat 라는 버튼을 클릭했을때 위와 같이....

for 루프는 이상없이 작동을 합니다.

근데 case 부분의 2..3 부분에서 동작을

2..3 : InsertUpdate;    으로 InsertUpdate; 라는 프로시저를

동작시키도록 하면 프로시저도 동작을 잘하다가
다 수행되고 끝부분에 가서는

윈도우 에러메시지인  "이 프로그램에서 잘못된 연산을 수행하여 종료됩니다..."

하고는 에러를 내네요....

(참고로, InsertUpdate; 프로시저도 개별적으로 테스트 할때는 아무런 이상없이
동작합니다.)

for 루프내로 들어간 프로시저가 합쳐지면서 뭔가 이상이 있는 것 같은데.....

(for 루프, 프로시저 각각 테스트하면 이상없음.  but, 붙여서 실행하면 에러발생)

이럴땐 어떻게 해야 할까요?
1  COMMENTS
  • Profile
    김경록 2002.06.01 00:49
    Procedure호출은 아래 질문을 봐도
    일단은 문제가 없는걸로 보입니다..
    제 생각엔 어딘가에 선언되어진 변수(Point)를 다루는
    부분에서 메모리 Dump가 나는 모양입니다..
    물론, InsertUpdate와 IsExits함수선언부만
    보여주시구..
    그 이하를 보여주시지 않아서..
    추측만 할 뿐입니다..


    이 문제(Memory Dump 문제)를 체크하기 위해서..
    델파이 메뉴의
    Project/Options/Compiler탭의 내용중

    RangeChecking과 Overflow를
    체크되어진 상태로 설정하구..
    Compile해 보십시오..
    그리구 실행하면..
    에러가 나올겁니다..
    이런 방법으로도 확인이 안된다면..
    일일이 Debug를 하여 Coding을 쫓아 다녀야 할 겁니다..
    답이 되셨길..


    아참!!!
    글구 혹시나 버그를 잡게 되시면..
    해당 옵션을 끄시기 바랍니다..
    그거 설정하면, 약간 실행파일 크기가 커지는
    것 같아서리..
    뭐 코딩이 몇십줄 안되면 괜찮구...   ^^;