Question simple ...

Résolu
greg38bj Messages postés 83 Date d'inscription jeudi 11 mars 2004 Statut Membre Dernière intervention 17 novembre 2008 - 8 mars 2008 à 18:30
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 9 mars 2008 à 16:12
Bonjour à tous
Bon, j'essaye toujours de traduire un code delphi en vb, et je bloque sur certaines choses (qui paraissent pourtant simples).
Voici un des problème :

var x,i:word;
    a:longword;
begin
   x:=0;
   while (x<256) do
     begin
       a:=x shl 24;
       for i:= 0 to 7 do
        begin
               a:= a + a;     <========= ici le problème(ou plutôt ce que je ne comprend pas)
               a:= a xor Seed;
        end;
       inc(x);
     end;
   end;

comment et pourquoi obtient-on zéro sachant que "a" a une valeur ?si x 1 ou 2 alors a + a  0

merci de bien vouloir éclairer ma lanterne

@+
greg38bj

6 réponses

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
9 mars 2008 à 13:23
a:= a + a;
pourquoi ne pas écrire a:= 2*a;

parce que ADD est mieux que MUL :)

du plus rapide au plus lentA A + A // A A << 1
A = A * 2
A = A / 0.5

<hr size="2" width="100%" />
http://deefaze.gnomz.com
3
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
9 mars 2008 à 12:41
a:= a + a;
pourquoi ne pas écrire a:= 2*a;

Mais, je pense que le mieux est de dire ce que tu souhaites réaliser plutôt que de donner un code à corriger sans savoir ce qu'il fait.

cantador
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
9 mars 2008 à 13:21
decalaration de variable locale :

  X est un mot non signé (16 bits)
  I est un mot non signé (16 bits)
  A est un mot long non signé (32 bits)

ROUTINE :
  X est egal a 0
  TANT QUE X est inferieur a 256 faire :
    A est egale a X "shift left" 24 (décalé de 24 bits sur la gauche)
    POUR I de 0 a 7 faire :
      A est egal a A + A
      A est egal a A xor (ou exclusif) Seed
    fin POUR.
    X est incrementé de 1 (X = X + 1)
  fin TANT QUE.
fin ROUTINE

en VB (pas sur a 100%)



Dim X As UShort
Dim I As Integer
Dim A As UInteger

  X = 0
  While (X < 256)
    ' A = X shl 24
    A = X*16777216

    For I = 0 to 7
      A = (A+A)
      A = A Xor Seed
    Next I

    X = X + 1
  WEnd
    

<hr size="2" width="100%" />
http://deefaze.gnomz.com
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
9 mars 2008 à 13:50
parce que ADD est mieux que MUL

oui bien vu foxi (faut que je révise mon assembleur..)

Mais

Dim X As UShort
Dim I As Integer
Dim A As UInteger

  X = 0
  While (X < 256)
    ' A = X shl 24
    A = X*16777216

    For I = 0 to 7
      A = (A+A)
      A = A Xor Seed
    Next I

    X = X + 1
  WEnd

çà donne quoi en Pacal ?

cantador
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
greg38bj Messages postés 83 Date d'inscription jeudi 11 mars 2004 Statut Membre Dernière intervention 17 novembre 2008
9 mars 2008 à 15:50
re ...
Je veux bien, mais je pense que la transition va être dur
je suis passé de vb6 a vb express 2005 l'année dernière et ça a déjà été dur alors me mettre au delphi ça risque d'être encore plus dur.
Je risque d'être un boulet car j'ai besoin de résultat rapide, si je dois passer des heures sur internet à chercher comment on fait ci ou ça, ça risque d'être long pour sortir un malheureux soft.
Je travaille surtout sur le décryptage de fichiers et sur la communication par port série.
Alors bonjour les angoisses !

@+
greg38bj
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
9 mars 2008 à 16:12
à 38 beaux jours, on est en pleine forme et

From vb6 to Delphi, c'est du gâteau,
car on n'a pas besoin de se faire expliquer toutes les bases (enfin si un peu quand même...)
Poses toutes les questions que tu souhaites, on te répondra (à condition que tu prenne un avatar...)

Lorsque tu auras gouté un peu au produit, tu ne pourras plus t'en passer..

C'est TERRIBLEMENT CONTAGIEUX !

cantador
0
Rejoignez-nous