delphi compiler-construction directive hints

¿Pueden deshabilitarse las sugerencias específicas de Delphi?



compiler-construction directive (4)

Lo mejor que puedo pensar es rodear el tema de la pista con una definición condicional, y usar la misma definición condicional alrededor del código que puede o no ser necesaria, como se muestra a continuación:

Si tienes esto:

procedure MyProc; var i : integer; begin DoSomething; //SomethingWith_i_IsCommentedOut; end;

Obtendrá: Sugerencia: la variable "i" se declara pero nunca se usa

Así que intente esto en su lugar:

procedure MyProc; {$IFDEF USE_THE_I_PROCEDURE} var i : integer; {$ENDIF} begin DoSomething; {$IFDEF USE_THE_I_PROCEDURE} SomethingWith_i_IsCommentedOut; {$ENDIF} end;

Ahora puedes activar o desactivar la definición, y nunca deberías obtener una pista.

En Delphi, puede usar las directivas del compilador para desactivar advertencias específicas, como

{$WARN USE_BEFORE_DEF OFF}

Pero cuando traté de hacer eso con una pista específica, cuyo underscore_style_name salí del archivo de ayuda, el compilador dijo que no sabe qué es {$ HINT}. Entonces, ¿hay alguna manera de hacer esto?


No hay sugerencias específicas, pero puedes deshabilitarlas todas.

{$HINTS OFF} procedure MyProc; var i : integer; begin DoSomething; end; {$HINTS ON}


Poco fuera de tema: debe tener cuidado con las sugerencias y advertencias del compilador. No son solo por diversión. El compilador solo dice que "el programa puede funcionar de forma diferente a lo que piensas porque TU código fuente no es exacto".


Para jugarlo realmente seguro, a uno le gustaría hacer algo como esto:

function TopazGetText(const _s: string): string; begin {$IFOPT <something>+} {$DEFINE HINTS_WERE_ON} {$HINTS OFF} {$ELSE} {$UNDEF HINTS_WERE_ON} {$ENDIF} Result := dzDGetText(_s, TOPAZ_TRANSLATION_DOMAIN); {$IFDEF HINTS_WERE_ON} {$HINTS ON} {$ENDIF} end;

Desafortunadamente, parece que no hay una directiva de compilación para verificar si las sugerencias están desactivadas o no, por lo que no puede hacer esto. (H + no es para pistas, sino para cadenas largas). Además, HINTS OFF / ON no funciona dentro de una función / procedimiento.

Así que terminas dando consejos de forma incondicional para toda la función:

{$HINTS OFF} function TopazGetText(const _s: string): string; begin Result := dzDGetText(_s, TOPAZ_TRANSLATION_DOMAIN); end; {$HINTS ON}

(El compilador solía decirme que no podía alinear dzDGetText, que es algo que no me importa en este caso y no quiero ver la pista porque esto me impediría (y a mis compañeros de trabajo) preocuparme por pistas importantes .)