cs_Cyrian26
Messages postés1Date d'inscriptionmardi 6 janvier 2009StatutMembreDernière intervention 6 janvier 2009
-
6 janv. 2009 à 13:50
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDerniè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 ?
sp40
Messages postés1276Date d'inscriptionmardi 28 octobre 2003StatutContributeurDernière intervention 3 juillet 201515 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)
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 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 ?