Bonjour à tous!
Je voudrais savoir si dans DELPHI7, il existe une fonction permettant de convertir une chaîne de caractères en tableau d'octets (array of byte).
Version imprimable
Bonjour à tous!
Je voudrais savoir si dans DELPHI7, il existe une fonction permettant de convertir une chaîne de caractères en tableau d'octets (array of byte).
Je ne connais pas de fonction spéciale, mais une chaîne étant un tableau de caractères, et Ord renvoyant la valeur ASCII du caractère,
ou en transtypantCode:Ord (maChaine [i]);
devrait te renvoyer la valeur que tu veux, non ?Code:Byte (Ord (maChaine [i]));
peut etre en feintant comme ca:
a tester ...Code:
1
2 x := TByteDynArray(PChar(MaChaine));
(Si TByteDynArray n'est pas declarée dans Types, c'est juste un array of byte)
La solution de guillemouze me paraît extrèmement risquée. C'est la violation d'accès presque assurée.
Je préfèrerais :
Code:
1
2
3
4
5
6
7
8
9 var Str: string; Bytes: array of Byte; begin ... SetLength(Bytes, Length(Str)); Move(Str[1], Bytes[0], Length(Str)); ... end;
oui mais la question etait :
et il n'est pas précisé "sans AV" :mrgreen:Citation:
il existe une fonction permettant de convertir une chaîne de caractères en tableau d'octets
effectivement, ta solution est beaucoup plus sure.
Par contre, pourquoi un Move et pas un Copy? (je ne connais pas bien l'effet exacte de la fonction Move)
ok, je viens de regarder dans l'aide les fonctions Copy et Move, je comprend mieux maintenant.
En fait j'ai été perturbé car je pensai aux fonction CopyMemory et MoveMemory. Mais Copy et Move ne sont pas du tout liées en fait ;)