Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr
  • 0

동일한 코드에서 디버그 릴리즈 에러차이


김승연

질문

안녕하세요 델파이 10 seattle 로 코딩을 하고 있습니다.

그런데 SQL 'and' 'where' 을 각 상황에 맞게 변환해주는 function 을 사용했습니다.

   function SQLprefix:string;
   begin
     if  WhereUsed  then
         SQLprefix  := 'and '
     else
     begin
       WhereUsed  :=  True;
       SQLprefix  := 'Where ';
     end;
   end;

위 문법을 사용하였고, WhereUsed : boolean으로 설정해 주었습니다.

그런데 디버그 모드에서는 정상적으로 되는 반면에 릴리즈 모드에서는 사진과 같은 에러가 뜨네요 ...

모드 자체에 문제가 있는 건지 ...

추가합니다... 프로젝트 옵션에서 Optimization 옵션을 Ture 하면 에러가 나고 False 하면 에러가 안납니다 ... 

저 옵션때문인거 같은데 ...

도움 주시면 감사하겠습니다.

프로그램에러.PNG

Edited by 김승연
이 댓글 링크
다른 사이트에 공유하기

3 answers to this question

Recommended Posts

  • 0

Debug와 Release 모드에서의 Boolean 기본값이 다릅니다.

아래와 같이 기본값을 설정 후 진행해주세요.

// 생성할 때 초기화
var
  WhereUsed : Boolean = False; 


// 또는 Create, Show 이벤트를 통해 초기화
procedure Form1.Formshow(Sender : TObject);
begin
  WhereUsed := False;
end;

...
function SQLprefix:string;
begin
  if WhereUsed  then
    SQLprefix  := 'and '
  else
  begin
    WhereUsed  :=  True;
    SQLprefix  := 'Where ';
  end;
end;

 

Edited by Miniuser
이 댓글 링크
다른 사이트에 공유하기

  • 0

그리고 아래처럼 굳이 변수를 생성하지 않고, Pos를 사용하는 것도 괜찮을 것 같습니다.

function SQLprefix(sQuery : String):string;
begin
  // 전달받은 문자열에 " Where "라 존재한다면
  if Pos(' Where ', sQuery) > 0 then
    SQLprefix  := 'and '
  else
    SQLprefix  := 'Where ';
end;

 

이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 질문에 답변하기...

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.