Comprendre un algo delphi pour pouvoir le traduire dans un autre langage

Résolu
Signaler
Messages postés
328
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
24 novembre 2005
-
Messages postés
328
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
24 novembre 2005
-
Messieurs dames bonjour !!

je me permet de venir poster sur le forum delphi car je dispose d'un programme que je dois traduire dans un autre langage.(VB 6...)
si vous pourriez essayer de m'expliquer ligne par ligne ce qui se passe
je vous en remercierais gracieusement....

voila le code..

bon prog a tous.

fabrice
anneebalise est un int
BissextAnnee est un char
anneebissextile est un int

anneebalise := (ord(BissextAnnee) shr 1) and $F;
anneebissextile := (ord(BissextAnnee) and 1)<> 0;

9 réponses

Messages postés
215
Date d'inscription
mardi 29 juillet 2003
Statut
Membre
Dernière intervention
1 septembre 2006

Erf je pense être juste niveau temps cet après midi(je bosse aussi)



- Mais quelques indications :



- En VB pour déclarer une variable, on utilise Dim



exemple: Dim i as Integer



-Le type Cardinal n'existe pas sous VB, il s'agit d'un nombre codé sur 4 octets non-signé



Deux solutions: - prendre le type Long


- créer ton type en faisant un tableau
de 4octets



- Le type char n'est pas natif sous VB, utilise le type Byte et la fonction Chr qui fait l'équivalence ASCII-caractère.



- La fonction Ord existe aussi sous VB.



- Pour le décalage de bits (shr) tu peux diviser simplement ton nombre par 2.



- Sous VB le type String n'est pas indexé, utilise la fonction Mid (à la place de Midstr aussi, c'est la même syntaxe).



- La structure If...Then...Else reste pareil.



Je me tiens à ta disposition pour des questions complémentaires.



Bon courage en espérant t'avoir aidé !




j!nH
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
124
Alors la fonction Ord donne le numéro ascii du caractere.

La fonction shr décale tout les bits d'un côté.



En fait, ce ne sont pas des comparaisons booleenne mais des manipulations sur les bits.

Essaie de trouver un équivalent au fonctions (s'il y a une aide regarde dans "manipulation de bits" et opérateur logique")



Je connnais pas assez le VB pour pouvoir t'aider plus. Désoler.
Messages postés
1727
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
6 novembre 2021
8
Salut,



annebissextile est visiblement un Boolean, pas un Integer.



Ord(BissextAnnee) te renvoie le numero de rang du Char, c'est à dire sa valeur Ascii.

shr décale les bits d'1 rang vers la droite au niveau de l'octet.



Si l'on pouvait voir le morceau de code, ça serait mieux.

D'autant plus qu'il a l'air intéressant.



Bonne prog'



japee
Messages postés
1727
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
6 novembre 2021
8
J'avais pourtant rafraîchi avant de poster...



Salut, désolé, CptPingu
Messages postés
328
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
24 novembre 2005

1: merci d avoir répondu
2:une idée sur le : and $F ??
3:personne est interprete delphi/VB6 en 3 eme langue? :-)
merci..
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
and $F fait un et bit a bit sur le resultat de (ord(BissextAnnee)
shr 1) c.à.d élimine les bits de poids en les mettant a 0

exemple si (ord(BissextAnnee) shr 1):=01101110 (ord(BissextAnnee) shr 1) and $F donne: 0000 1110
Messages postés
215
Date d'inscription
mardi 29 juillet 2003
Statut
Membre
Dernière intervention
1 septembre 2006

Si tu présente le code complet, y'a moyen que je te le traduise ;).

j!nH
Messages postés
328
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
24 novembre 2005

lu jinh.

merci de la proposition...

je croise les doigts a défauts de m'arracher les cheveux..

Var
NumObject,IndexFin,Index,EndOfBuffer,IndexMessage,IndexFinMessage : cardinal;
SearchString,SearchString2: string;

XMISDN,XMESS,HeureBalise , HeureSynchro, Requete: string;
FormatDateLocal : string;

DateHeureB , DateHeureS, DateHeure,DateHeureNextSynchro:TDateTime;

JourAnnee,Jour,Heure,AMPM,annee : string;
HeureDec,t,t1,Decalage: cardinal;
BissextAnnee : char;
anneebalise,J : cardinal;
anneebissextile : boolean;
num_connu : boolean;
JourBalise : string;
First: boolean;

'certaines variables déclarées servent ailleurs faites pas attention


BissextAnnee := MidStr(HeureBalise,1,1)[1];
JourAnnee := MidStr(HeureBalise,2,3);
Jour := HeureBalise[5];
AMPM := HeureBalise[6];
Heure := Midstr(HeureBalise,7,5);

anneebalise := (ord(BissextAnnee) shr 1) and $F;
anneebissextile := (ord(BissextAnnee) and 1) <> 0;

annee := inttostr(Yearof(DateHeureS));
if(strtoint(annee[4]) < anneebalise) then
annee := inttostr(Yearof(DateHeureS) + 1)
else if(strtoint(annee[4]) > anneebalise) then
annee := inttostr(Yearof(DateHeureS) - 1);


if(anneebissextile) then Memo1.Lines.add('Bissextile');
J := strtoint(Jour);
if(J = 1) then JourBalise := 'Lundi'
else if(J = 2) then JourBalise := 'Mardi'
else if(J = 3) then JourBalise := 'Mercredi'
else if(J = 4) then JourBalise := 'Jeudi'
else if(J = 5) then JourBalise := 'Vendredi'
else if(J = 6) then JourBalise := 'Samedi'
else if(J = 7) then JourBalise := 'Dimanche';


memo1.Lines.Add('Annee : ' + inttostr(anneebalise));
memo1.Lines.Add('Jour annee : ' + JourAnnee);
memo1.Lines.Add('Jour: ' + Jour + ' (' + JourBalise + ')');
memo1.Lines.Add('AMPM: ' + AMPM);
memo1.Lines.Add('Heure: ' + Heure);
Messages postés
328
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
24 novembre 2005

merci beaucoup pour ces quelques renseignements.
je connai quand meme le vb je te rassure mais vite fait quoi.
connexion BDD,fichier,etc...

je m'y remet.
si t'as plus de temps merci d avance :-))))

fabrice