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, 붙여서 실행하면 에러발생)
이럴땐 어떻게 해야 할까요?
일단은 문제가 없는걸로 보입니다..
제 생각엔 어딘가에 선언되어진 변수(Point)를 다루는
부분에서 메모리 Dump가 나는 모양입니다..
물론, InsertUpdate와 IsExits함수선언부만
보여주시구..
그 이하를 보여주시지 않아서..
추측만 할 뿐입니다..
이 문제(Memory Dump 문제)를 체크하기 위해서..
델파이 메뉴의
Project/Options/Compiler탭의 내용중
RangeChecking과 Overflow를
체크되어진 상태로 설정하구..
Compile해 보십시오..
그리구 실행하면..
에러가 나올겁니다..
이런 방법으로도 확인이 안된다면..
일일이 Debug를 하여 Coding을 쫓아 다녀야 할 겁니다..
답이 되셨길..
아참!!!
글구 혹시나 버그를 잡게 되시면..
해당 옵션을 끄시기 바랍니다..
그거 설정하면, 약간 실행파일 크기가 커지는
것 같아서리..
뭐 코딩이 몇십줄 안되면 괜찮구... ^^;