J'ai fait un projet sous Delphi 3 utilisant des tables sous Paradox et
depuis plusieurs mois cela marche trés bien.
Le probléme est que depuis que j'ai changé le numéro de version du projet,
j'ai ce message d'erreur qui survient dans cette ligne de code :
unit MesFonc;
interface
function Decrypt(const S: String; Key: Word): String;
function Encrypt(const S: String; Key: Word): String;
implementation
uses windows;
const
C1 = 52845;
C2 = 22719;
{Dans les 2 fonctions suivantes, Key est une valeur indiquée par le
programmeur
elle doit être identique pour le cryptage et le décryptage d'un même mot}
function Encrypt(const S: String; Key: Word): String;
var
I: byte;
begin
result := S;
for I := 0 to Length(S) do begin
result[I] := char(byte(S[I]) xor (Key shr 8));
Key := (byte(result[I]) + Key) * C1 + C2;
end;
end;
function Decrypt(const S: String; Key: Word): String;
var
I: byte;
begin
Result := S;
for I := 0 to Length(S) do begin
Result[I] := char(byte(S[I]) xor (Key shr 8));
Key := (byte(S[I]) + Key) * C1 + C2; ERREUR SUR CETTE LIGNE EN PAS
A PAS !
end;
end;
end.
Ce code ne sert pour décoder le mots de passe, stocké dans une Base de
donnée, à l'entrée de mon appli.
Dans l'aide, il me dit :
ERangeError n'est déclenchée que si les vérifications d'intervalle sont
activées. Pour activer les vérifications d'intervalle, incluez la directive
de compilation $R+ dans le code source du projet, ou sélectionnez la
commande Options|Projet, choisissez l'onglet Pascal et activez la case à
cocher Vérification des limites de la boîte de dialogue.
Mais où dois-je mettre $R+ ? et qu'est ce que c'est que cela ?
Sinon, j'ai cocher "Vérification des limites" mais l'erreur est toujours
présentes.
Je ne sais plus quoi y faire !
Est ce que quelqu'un à une idée, ais-je fait une erreur ?
Merci de votre coup de main.
C'est assez Urgent !
m-d...@club-internet.fr
Mickey
>function Decrypt(const S: String; Key: Word): String;
>[...]
> Key := (byte(S[I]) + Key) * C1 + C2; ERREUR SUR CETTE LIGNE EN PAS
>[...]
Si tu as une erreur, c'est que ton calcul dépasse la capacité permise de la variable
destinatrice, autrement dit que le calcul ci-dessus donne une valeur superieure à
65536, qui est le maximum stockable dans un word.
Donc,
- ou tu utilises des types autorisant des valeurs plus importantes (longint, par
exemple),
- ou tu désactives la vérification d'étendue (soit en décochant la case dans les options de
compilation, soit {$R-} en tête de programme, ou localement (ce qui permet de le réactiver
immédiatement après)
- ou tu tronques sciemment la valeur (à l'aide d'un modulo, par exemple).
Merci beaucoup.
@ bientôt!
Mickey
Eric Rossé <ro...@micronet.fr> a écrit dans le message :
87huts80mdlo3up4f...@4ax.com...