Erreur sur les types de variables d'une fonction

cs_Cyrian26 Messages postés 1 Date d'inscription mardi 6 janvier 2009 Statut Membre Dernière intervention 6 janvier 2009 - 6 janv. 2009 à 13:50
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 - 7 janv. 2009 à 18:21
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

Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
7 janv. 2009 à 09:03
c'est laquelle la ligne 239 ?
0
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
7 janv. 2009 à 14:18
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
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
7 janv. 2009 à 18:21
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 !
0
Rejoignez-nous