Question

Dans Delphi, vous pouvez utiliser les directives du compilateur pour désactiver des avertissements spécifiques, tels que

.
{$WARN USE_BEFORE_DEF OFF}

Mais lorsque j'ai essayé de le faire avec un indice spécifique, dont le underscore_style_name est sorti du fichier d'aide, le compilateur a déclaré qu'il ne savait pas ce que {$ HINT} était. Alors, y a-t-il un moyen de le faire?

Était-ce utile?

La solution

Aucun indice spécifique, mais vous pouvez tous les désactiver.

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

Autres conseils

Petit hors sujet: Vous devez prendre soin des astuces et des avertissements du compilateur. Ils ne sont pas juste pour s'amuser. Le compilateur dit simplement que "le programme peut fonctionner différemment selon vous, car VOTRE code source n’est pas exact".

Pour jouer vraiment en sécurité, on aimerait faire quelque chose comme ceci:

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;

Malheureusement, il ne semble pas exister de directive du compilateur permettant de vérifier si les indicateurs sont désactivés ou non. Vous ne pouvez donc pas le faire. (H + n'est pas pour des indices, mais pour de longues chaînes). De plus, HINTS OFF / ON ne fonctionne pas dans une fonction / procédure.

Vous finissez donc par activer et désactiver les indications de manière inconditionnelle pour toute la fonction:

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

(Le compilateur me disait qu'il ne pouvait pas insérer inline dzDGetText, ce qui m'importe peu dans ce cas et je ne veux pas voir l'allusion car cela m'empêcherait de prendre soin de moi (et de mes collègues) sur des indices importants.)

Le mieux que je puisse penser est d'encadrer le sujet de l'indicateur avec une définition conditionnelle et d'utiliser la même définition conditionnelle autour du code qui peut être nécessaire ou non, comme indiqué ci-dessous:

Si vous avez ceci:

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

Vous obtiendrez: Indice: variable " i " est déclaré mais jamais utilisé

Alors essayez plutôt ceci:

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

Vous pouvez maintenant activer ou désactiver la définition et vous ne devriez jamais recevoir d'indice.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top