저는 Jeff Atwood's article about how errors are always the programmer's fault에 익숙하지만 실제로 델파이 .pas 파일에서 버그를 발견했다고 생각합니다.Delphi IDE에서 사용하는 .PAS 파일을 다시 컴파일 할 수 있습니까?
특히, 내가 델파이 2007 사용하고, 에러가 내 컴퓨터에서 다음 위치에있는 DBCommon.pas 파일의 라인 955에 :
C : \ 프로그램 파일 \ 코드기어 \ RAD 스튜디오 \ 5.0 \ 소스 \는 Win32 \ DB \ DBCommon.pas
그리고 코드는 이것이다 :
...
FieldIndex := StrToInt(Token);
if DataSet.FieldCount >= FieldIndex then
LastField := DataSet.Fields[FieldIndex-1].FieldName else
...
"토큰"0의 값이있는 경우, 우리는 인덱스 -1에 액세스하려고 DataSet.Field 결과가 범위를 벗어나는리스트 인덱스가됩니다.
이 오류는 사용자가 처리하기 전에 처리되기 때문에 사용자에게 제기되지는 않지만, 이러한 상황이 발생할 때마다 디버거가 중단되도록하는 것은 대단히 짜증나게합니다.
"이 예외 유형을 무시할 수 있습니다."그러나 범위를 벗어난 인덱스는 일반적으로 무시하고 싶지 않기 때문에 자주 사용됩니다.
당신과 같이 그 ORDER BY 함수가 포함 된 SELECT 문을 때 FieldIndex가 제로 원인이 상황은 다음과 같습니다
ORDER BY
CASE WHEN FIELD1 = FIELD3 THEN 1 ELSE 2 END
,CASE WHEN FIELD2 = FIELD4 THEN 1 ELSE 2 END
내가 DBCommon.pas의 버그를 수정 할 수 있지만, 델파이는하지 않습니다 재 컴파일하고 내 변경 사항이 적용되지 않습니다. .DCU 파일의 이름을 변경하면 "DBCommon.dcu"를 찾을 수 없다는 불만이 생깁니다.
내 질문에 : 내 수정 프로그램으로 DBCommon.pas를 다시 컴파일 할 수 있습니까? 그렇다면 어떻게해야합니까?
당신이 버그를 재현 할 수 있습니까? 만약 당신이 품질 관리를 원한다면, 재현성있는 케이스를 메일로 보내주십시오. (거의 모든 것을 pluimers dot com이 내받은 편지함에 도착합니다)? –
"제프 앳 우드의 기사에 오류가 항상 프로그래머의 잘못이 있음을 잘 알고 있습니다.하지만 델파이 .pas 파일에서 버그를 발견했습니다." <- 누가 .pas 파일을 만들었습니까? 예, 프로그래머 :) –
복제 : http://stackoverflow.com/questions/1055010/how-to-recompile-a-specific-unit-from-the-vcl –