Pregunta

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

{$WARN USE_BEFORE_DEF OFF}

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

¿Fue útil?

Solución

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

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

Otros consejos

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 manera diferente a lo que usted piensa porque SU código fuente no es exacto".

Para jugar de manera segura, 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 del compilador 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.

Entonces terminas apagando y encendiendo las pistas incondicionalmente 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 en línea dzDGetText, que es algo que no me importa en este caso y no quiero ver la pista porque esto me detendría a mí (y a mis compañeros de trabajo) a importarme sobre sugerencias importantes).

Lo mejor que se me ocurre 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 necesario, como se muestra a continuación:

Si tienes esto:

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

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

Entonces 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 puede activar o desactivar la definición, y nunca debería obtener una pista.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top