cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 2013
-
24 juin 2002 à 20:46
cs_Peone
Messages postés16Date d'inscriptionmercredi 8 février 2006StatutMembreDernière intervention12 mars 2006
-
8 févr. 2006 à 12:18
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_Peone
Messages postés16Date d'inscriptionmercredi 8 février 2006StatutMembreDernière intervention12 mars 2006 8 févr. 2006 à 12:18
J'aurais pour ma prt juste voulu savoir de quel type etait result?
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 24 juin 2002 à 20:46
C'est un réflexe à prendre que d'initialiser le résultat d'une fonction dès le début.
Tout à fait d'accord avec Nono40.
Pour te montrer notre bonne volonté, je te livre le code qui permet d'effectuer l'opération inverse :
function HexToAscii(s: string): string;
var
i: integer;
begin
Result := EmptyStr;
for i := 1 to Length(S) do
begin
if ((i mod 2) = 1) then
Result := Result + Chr(StrToInt('0x' + Copy(S, i, 2)));
end;
end;
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 24 juin 2002 à 17:23
C'est une chance que Delphi initialise les chaine à vide au moment de leur création ( les chaines sont un exception ). Sinon cette boucle commencerait sur une chaine aléatoire.( ce serait le cas d'ailleurs pour un result de type Integer ).
Il vaut mieux donc en être sur et placer Result:='' avant la boucle.
Il n'est pas nécessaire de tester le cas 0 car For i:=1 to 0 ne fait rien contrairement au Basic :
Result:=''
for i := 1 to Length(rep) do Result:=Result+IntToHex(Ord(rep[i]),2)+' ';
8 févr. 2006 à 12:18
24 juin 2002 à 20:46
Tout à fait d'accord avec Nono40.
Pour te montrer notre bonne volonté, je te livre le code qui permet d'effectuer l'opération inverse :
function HexToAscii(s: string): string;
var
i: integer;
begin
Result := EmptyStr;
for i := 1 to Length(S) do
begin
if ((i mod 2) = 1) then
Result := Result + Chr(StrToInt('0x' + Copy(S, i, 2)));
end;
end;
24 juin 2002 à 17:23
Il vaut mieux donc en être sur et placer Result:='' avant la boucle.
Il n'est pas nécessaire de tester le cas 0 car For i:=1 to 0 ne fait rien contrairement au Basic :
Result:=''
for i := 1 to Length(rep) do Result:=Result+IntToHex(Ord(rep[i]),2)+' ';