Erreur sur les types de variables d'une fonction

Signaler
Messages postés
1
Date d'inscription
mardi 6 janvier 2009
Statut
Membre
Dernière intervention
6 janvier 2009
-
Messages postés
3792
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
-
Bonjour,
J'ai créé une fonction afin que je puisse convertir un caractère en binaire. Hélas je suis pas très callé dans les fonctions, mais j'arrive tout de même à en faire et à les utiliser.

Mais là, je suis confronté à un petit problème (surement tout con) auquel je ne trouve pas de réponse.

Lorsque que j'utilise ma fonction suivante :

function BinToDec(Val: String): Extended;
var
  Nombre_Bin : String;
  i : Cardinal;
  Exposant, Nombre_Dec : Extended;
begin
  Nombre_Bin := Val;
  Nombre_Dec := 0;
  for i := 1 to length(Val) do
    begin
      if Nombre_Bin[i] = '1' then
        begin
          Exposant := length(Nombre_Bin)-i;
          Nombre_Dec := Nombre_Dec + power(2, Exposant);
        end;
    end;
  result := Nombre_Dec;
end;

Delphi m'affiche l'erreur suivante :
[Erreur] UnitCrypter.pas(239): Les types des paramètres VAR originaux et formels doivent être identiques

Et pourtant, le type de la valeur attendue et de la valeur utilisé est le même : String. Tout fonctionne correctement avec un type entier, pour d'autre fonctions, mais rien ne marche et je ne trouve pas pourquoi, mais ça a l'air bien bête >.<

Pourriez-vous m'apporter une réponse à la question ?

Merci d'avance.

3 réponses

Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
c'est laquelle la ligne 239 ?
Messages postés
1284
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
13
Bonjour,

Soit tu as une différence de type dans les paramètres de ta fonction entre sa déclaration et son implémentation, soit il existe déjà une fonction de delphi BinToDec qui a d'autre paramètres... (Cliques sur BinToDec avec la touche CTRL appuyée, si la fonction existe déjà, delphi devrait t'y amener directement)

Simon
Messages postés
3792
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
Cela vient probablement du fait que ta fonction fait conflit avec la fonction BinToDec de Delphi qui accepte d'autres paramètres : renomme en MyBinToDec (ou autre-chose). (ou alors appelle spécifiquement ta fonction en disant MyUnit.BinToDec(MaValue);
C'est le plus probable.

Sinon, si ça ne marche toujours pas :

function BinToDec(var Val: String): Extended;





Probablement ... cela pourrait marcher en dernier recours. Transmets-tu une propriété en paramètre (genre Edit1.Text) ou bien utilises-tu un type ShortString ?

Cordialement, Bacterius !