Czy mogę ponownie skompilować pliki .PAS używane przez IDE Delphi?

jestem zaznajomiony zArtykuł Jeffa Atwooda o tym, jak błędy są zawsze błędem programisty, ale wierzę, że naprawdę znalazłem błąd w pliku .pas Delphi.

W szczególności używam Delphi 2007, a błąd jest w linii 955 pliku DBCommon.pas, który na moim komputerze znajduje się tutaj:

C: pliki programów codegear rd studio 5 0 źródło Win32 db DBCommon.pas

A kod jest następujący:

...
  FieldIndex := StrToInt(Token);
  if DataSet.FieldCount >= FieldIndex then
    LastField := DataSet.Fields[FieldIndex-1].FieldName else
...

Jeśli „Token” ma wartość zero, to próbujemy uzyskać dostęp do indeksu -1 w DataSet.Fields, co powoduje indeks listy poza granicami błędu.

Ten błąd nie jest zgłaszany użytkownikowi, ponieważ jest on obsługiwany przed osiągnięciem wysokiego poziomu, ale niezwykle irytujące jest włamywanie debugera za każdym razem, gdy to się dzieje.

Mogłem „Zignorować ten typ wyjątku”, ale błędy poza granicami są na tyle powszechne, że nie chcę ich ignorować.

Sytuacja, w której FieldIndex ma wartość zero, ma miejsce, gdy masz instrukcję SELECT, której ORDER BY zawiera funkcję, jak w:

ORDER BY
  CASE WHEN FIELD1 = FIELD3 THEN 1 ELSE 2 END
 ,CASE WHEN FIELD2 = FIELD4 THEN 1 ELSE 2 END

Mogę naprawić błąd w DBCommon.pas, ale Delphi się nie przekompiluje, a moja zmiana nie zadziała. Jeśli zmienię nazwę pliku .DCU, to po prostu narzeka, że ​​nie można znaleźć „DBCommon.dcu”.

Więc (w końcu) moje pytanie brzmi: czy mogę przekompilować DBCommon.pas za pomocą mojej poprawki, a jeśli tak, to w jaki sposób?

questionAnswers(7)

yourAnswerToTheQuestion