Delphi에서 "반환 값이 정의되지 않을 수 있음"에 대한 경고를 비활성화하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/61418

  •  09-06-2019
  •  | 
  •  

문제

다음과 같은 경고를 표시하는 기능이 있습니다.

[DCC 경고] filename.pas(6939):W1035 'function' 함수의 반환 값이 정의되지 않았을 수 있습니다.

그러나 이 함수는 깨끗하고 작으며 알려진 예상 반환 값을 가지고 있습니다.함수의 첫 번째 명령문은 다음과 같습니다.

Result := '';

그리고 호출되는 지역 변수나 매개변수가 없습니다. Result 어느 하나.

이 경고를 제거하기 위해 이 메서드를 둘러쌀 수 있는 pragma와 유사한 지시문이 있나요?델파이 2007 입니다.

불행하게도 이 Delphi 설치에 대한 도움말 시스템이 작동하지 않으므로 지금은 해당 경고에 대한 도움말을 표시할 수 없습니다.

내가 무엇을 할 수 있는지 아는 사람이 있나요?

도움이 되었습니까?

해결책

경고를 해결하기 위해 모든 조치를 취하셨나요?우리가 볼 수 있도록 코드를 게시해 주실 수 있을까요?

다음과 같은 방법으로 로컬에서 경고를 끌 수 있습니다.

{$WARN NO_RETVAL OFF}
function func(...): string;
begin
  ...
end;
{$WARN NO_RETVAL ON}

다른 팁

이 장치의 코드를 보고 싶은지 잘 모르겠습니다...결국 6939라인에서 오류가 발생합니다...일부 내부 컴파일러 테이블이 초과되었을 수 있습니까?

델파이에 일종의 버그가 있는 것 같습니다.이 게시물을 읽어보세요. 마지막 댓글은 귀하가 받은 것일 수 있는 다른 버그 보고서에 대한 링크입니다.

http://qc.codegear.com/wc/qcmain.aspx?d=8144

{$WARN NO_RETVAL OFF}는 당신이 찾고 있는 것이지만 일반적으로 나는 왜 이런 일이 일어나는지 알고 싶습니다.다르게 형식을 지정하고 도움이 되는지 확인하는 것이 좋습니다.

거기에 Exit와 같은 흐름 변경 명령이 있나요?예외 등을 직접 발생시키나요?귀하의 사례 설명 끝에 Result에 값을 설정하는 else가 있습니까?

해당 요소를 조정하여 경고도 제거되는지 확인할 수 있습니다.

이에 대한 좋은 답변을 얻으려면 코드를 게시해야 합니다.일반적으로 Delphi 컴파일러는 결과가 정의되지 않을 수 있는 코드 경로가 있는 경우 이 경고를 표시합니다.때로는 해당 코드 경로가 명확하지 않은 경우도 있습니다.

Delphi 컴파일러에는 최소한 Delphi4부터 다음과 같은 버그가 있습니다.함수의 매개변수(Self, Result 포함)와 로컬 변수의 합이 31개를 초과하면 문제가 발생합니다.예를 들어 W1035 경고를 작성할 수 있습니다(결과는 정의되지 않을 수 있음).사용되지 않은 변수를 놓칠 수 있습니다.이 프로젝트를 시도해 보세요:

program TestCompilerProblems;

procedure Proc;
var
  a01, a02, a03, a04, a05, a06, a07, a08, a09, a10,
  a11, a12, a13, a14, a15, a16, a17, a18, a19, a20,
  a21, a22, a23, a24, a25, a26, a27, a28, a29, a30,
  a31, a32, a33, a34, a35, a36, a37, a38, a39, a40: Integer;
begin
end;

begin
  Proc;
end.

40이 아닌 31개의 힌트가 발생합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top