2016-09-29 7 views
2

나는 나의 'Libray 경로'다음 디렉토리 아래에있는 '도구/환경 옵션/라이브러리'에있다. 여기에 파일 중 하나가 QRPDFSynFilt.pas 및 QRPDFSynFilt.dcu입니다..pas 파일을 찾을 수 없지만 .dcu 파일이 있으면 충분하지 않습니까? 거기에 좀 파 파일과 DCU 파일이에서</p> <pre><code>C:ggProgramFilesQR-synopse-pdf-files </code></pre> <p>: 델파이 7에서

이제 내 문제는 pas 파일을 사용할 수 있기 때문에 항상 디버깅하는 동안 단계별로 진행되고 있습니다.
그래서 나는 새로운 디렉토리를 만들어 :

C:\ggProgramFiles\QR-synopse-pdf-files\dcu 

을 만 DCU 파일이 복사됩니다.
그런 다음 'Tools/Environment options/Library'의 경로를이 새 디렉토리를 가리 키도록 변경했습니다.
그러나 지금은 델파이 7 그가

C:\ggProgramFiles\QR-synopse-pdf-files\dcu\QRPDFSynFilt.pas 

를 찾을 수 없습니다 알려줍니다 그에만 DCU가 올바른 것입니다.
하지만 필자는 Delphi가 DCU 파일을 찾으면 충분하다고 생각할 때 DCU가 발견되면 PAS 파일이 필요하지 않다고 항상 생각했습니다.

내 질문은 델파이가 컴파일 할 PAS 파일이 필요하거나 DCU가 충분하고 후자가 사실이라면 델파이가 나에게이 오류를 줄 수있는 원인이 무엇일까요? Deltics에

편집 내가 {OFF 따라서 debuginfo $} 컴파일러 지시어를 사용할 수 있지만,이 장치는 제 3 회 파티를하기 때문에 내가 그들을 편집하고 싶어하지 않았다

에 응답합니다. 그 밖의 방법이 없다면 나는 여전히 그렇게 할 것입니다. 다비즈의 의견에

편집 : 당신이 dcu는 다음이 충분해야한다있는 경우 컴파일러 오류가

[Fatal Error] File not found 'C:\ggProgramFiles\QR-synopse-pdf-files\dcu\QRPDFSynFilt.pas' 
+0

컴퓨터 옵션에서 디버그를 사용하지 않고 dcus로 파일을 컴파일하기 만하면됩니다. 그리고 pas 파일보다는 dcus를 제공하십시오. 그게 네가 원하는거야. 나는 이것을하지 않겠지 만 그것은 당신의 선택입니다. –

+0

오류에 대한 설명을 볼 수 없습니다. pas 파일을 제거해야합니다. –

+0

@DavidHeffernan 컴파일러가 pas 파일을 보지 못하게했을 때 델파이에서 얻은 정확한 오류로 질문을 업데이트했습니다. – GuidoG

답변

4

예입니다. 설정에 문제가 있습니다. 그러나이를 수정하고 빌드 환경에 복잡성을 도입하고 처리하려고 시도하는 대신 "첫 번째 문제를 수정하십시오" ".

대신 컴파일러를 바보하려고 노력하는, 당신이 디버깅 할 결코 어떤 pas 파일의 상단에 {$debuginfo OFF}을 추가

{$debuginfo OFF} 

그런 다음에 관계없이 프로젝트의 컴파일러 설정,이 단위는 없을 것 디버그 정보로 컴파일되고 디버거가 단계별로 들어 가지 않습니다. 당신은 단순히 주석으로 바꿀하기 위해 { 후 지시에 .을 추가 할 수 있습니다 디버깅을 다시 활성화하려면 다음

{.$debuginfo OFF} // This is now just a comment, not an active directive 
는 등 서로 다른 색상으로 구성 주석 및 지침을 가정 (차이가 명확하게됩니다

구문 강조 , imho는 좋은 생각이다).

그것은 당신이 사용하거나 프로젝트를 조건으로 이러한 특정 있지만, 관련 단위의 디버깅을 해제 할 수 있도록 조건부 컴파일 지시문을 내부에이 지시자를 넣어 적합 할 수 있습니다 : 상기이와

{$ifdef debugQRPDF} 
    {$debuginfo ON} 
{$else} 
    {$debuginfo OFF} 
{$endif} 

모든 단위 top은 프로젝트 컴파일러 설정이 아니라 프로젝트 조건에 따라 디버그 사용 또는 사용 안 함으로 설정됩니다. 그런 다음 디버깅을 피하기 위해 컴파일러에서 pas 파일을 "숨기"려고하는 것에 대해 걱정할 필요가 없습니다.

조건부 지시문과 같은 프로젝트 설정을 변경할 때 해당 변경 사항이 빌드에 올바르게 반영되도록하려면 전체 다시 작성이 필요합니다.

+0

나는 틀린 다른 것에 동의한다. 나는 컴파일러 지시문에 대해 알고 있었지만 제 3 자이기 때문에 pas 파일을 편집하고 싶지는 않았지만 어쩌면 그것은 나의 유일한 선택입니다. 이 정보로 내 질문을 업데이트 할 것입니다 – GuidoG

+0

디버그없이 컴파일해야하는 파스칼 파일을 변경할 필요가 없습니다. –

+0

@DavidHeffernan -하지만 OP는 ** 아무 것도 ** 디버깅 할 수 없습니다. 디버그하고 싶다. 특정 파일에서 디버깅을 끄는 유일한 방법은 (모든 것에 적용되는 프로젝트 설정과 무관하게) 특정 파일 (또는 일반적인'inc'lude 파일)에 지시문을 삽입하는 것입니다. 디버그하지 않으려는 경우) – Deltics

2

타사 구성 요소 라이브러리이고 공급 업체가 소스를 제공 한 경우 디자인 타임 패키지를 열고 디버그 정보를 해제 한 상태에서 다시 컴파일 할 수 있습니다. 이렇게하면 디버거가 연관된 .pas 파일로 디버그하려고 시도하지 않을 새로운 dcus가 생성됩니다. 이 옵션은 프로젝트 옵션에서 찾을 수 있습니다. Delphi 컴파일러 -> 컴파일 -> 디버깅 -> 디버그 정보로 이동하십시오. 설정을 OFF로 변경하십시오.

+0

예 나는 그것을 알고 있지만 여전히 pas 파일을 숨기고 dcu 파일 만 보도록하면 컴파일 할 수 없다는 것을 설명하지 못한다. – GuidoG

+0

dcu 파일을 다른 디렉토리에 두는 것으로 충분하지 않다. 먼저 디버그 정보로 다시 컴파일해야합니다. pas 파일 dcu가 디렉토리에서 dcus가없는 another.pas 파일을 참조하여 컴파일 된 경우 .pas 파일을 컴파일 할 때 사용할 수 있어야합니다. – Tav

4

아마도 프로젝트 목록에 파일이 있습니다. 이것은 컴파일러에게 컴파일하고자하는 것을 효과적으로 알려줍니다. 프로젝트에서 제거해야하지만 참조를 참조하는 각 유닛의 uses 절에 참조를 남겨 둡니다.

+0

Im 확실하게 확인했지만 다시 확인하는 것이 좋습니다. 나는 내 사무실로 돌아올 때 그렇게 할 것이다. – GuidoG