Identyfikatory dla dyrektywy kompilatora $WARN w Delphi

Delphi posiada dyrektywę kompilatora $WARN, która pozwala na selektywne Włączanie lub wyłączanie określonych ostrzeżeń. Plik pomocy Delphi 2009 opisuje składnię:

{$WARN identifier ON|OFF}

Ale wyświetla tylko identyfikatory dla 6 ostrzeżeń.

Chciałbym mieć pełną listę wszystkich identyfikatorów ostrzegawczych. W szczególności chcę znać identyfikatory dla ukrytych ostrzeżeń w1057 i W1058 w Delphi 2009.

Udało mi się odgadnąć jeden dla niejawnych ANSI - >Unicode (W1057):

{$WARN IMPLICIT_STRING_CAST OFF}

Googling for that found me the other one:

{$WARN IMPLICIT_STRING_CAST_LOSS OFF}
Chociaż to rozwiązuje moją pilną potrzebę, nadal chciałbym znać pełną listę identyfikatorów ostrzeżeń. Takie rzeczy powinny być udokumentowane.
Author: Jan Goyvaerts, 2008-12-18

4 answers

Przejrzałem pomoc i nie widziałem pełnego list...so grzebanie w kodzie wydaje się, że stałe ostrzegawcze kompilatora są wymienione w: CodeGear \ RAD Studio \ 6.0 \ sources\toolsapi \ DCCStrs.pas

Wyszukaj "Implicit_String_Cast_Loss" a zobaczysz stałą sIMPLICIT_STRING_CAST_LOSS = 'DCC_IMPLICIT_STRING_CAST_LOSS';

Zakładam, że reszta łańcuchów DCC_xxx z odpowiadającymi im definicjami x_true/_false / _error jest tym, czego szukasz.

Pomoc Online nie było zbyt dobrze od Delphi 7.

 26
Author: Darian Miller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-18 05:05:55

Darian ma rację, że DCCStrs.pas wymienia identyfikatory używane przez kompilator Delphi. Nie przyszło mi do głowy przeszukiwanie źródła, ponieważ Delphi nie zawiera źródła do swojego kompilatora.

Wyodrębniłem identyfikatory dla podpowiedzi i ostrzeżeń z tego

 57
Author: Jan Goyvaerts,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-03 17:15:14

Coś jeszcze nie wymienione w dokumentacji Delphi 2009:

Dyrektywa $WARN ma teraz błąd trzeciej opcji oprócz włączania i wyłączania. Więc możesz mieć:

{$WARN IMPLICIT_STRING_CAST OFF} to disable the warning
{$WARN IMPLICIT_STRING_CAST ON} to enable warning
{$WARN IMPLICIT_STRING_CAST ERROR} to turn the warning into an error
 24
Author: Jan Goyvaerts,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-19 00:14:21

Takie rzeczy powinny być udokumentowane

Na dzień dzisiejszy pełna lista identyfikatorów i ich ostrzeżeń kompilatora znajduje się w dokumentacji pod adresem:

Http://docwiki.embarcadero.com/RADStudio/en/Warning_messages_ (Delphi)

Fragment:

Identyfikator w dyrektywie $ WARN może mieć dowolną z następujących wartości:

|      Warning      | Identifier |
|:-----------------:|:----------:|
| SYMBOL_DEPRECATED | W1000      |
| SYMBOL_LIBRARY    | W1001      |
| (...)             | (...)      |
 5
Author: Günther the Beautiful,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-17 13:13:42