
Envoyé par
engrobel
Tout à fait d'accord avec toi Argol_Medusa. J'utilise régulièrement l'AnsiString pour concaténer, extraire des séquences de caractères etc. Mais quand les buffers (comme les trames de communication) peuvent contenir l'octet 0, l'AnsiString est inutilisable.
En fait justement je suis en ce moment sur un projet de communication ethernet avec des trames à remplir, trames pouvant être très longues ( un char Buffer[4096]; par exemple ) et dans lequel je viens écrire des données, données étant des unsigned long int ( 4 octets ), des booleans ( un bit ) ou des strings suivant la position dans le buffer ( avec en plus possibilité de changer de big endian en little endian )
Tous mes traitements de caractères se font en AnsiString ( enfin en CString en ce moment car je suis sous visual studio - beurk - ) et lorsque mon traitement est terminé, au moment d'inscrire la string dans ma trame, je fais simplement une boucle for qui recopie chaque caractère + un ajout de 0x00 à la fin.
Je n'ai pas le borland builder sous les yeux pour vérifier avec l'AnsiString comment s'appelle la commande mais en CString c'est :
1 2 3 4 5 6
| CString TEST="Test_de_trame";
char test[10];
for (n=0 ; n<10 ; n++)
test[n]=TEST.operator [](n);
test[9]='\0';
printf("%s",test); |
En AnsiString de tête tu dois avoir aussi l'operator sinon essaye .substring je ne sais plus exactement mais c'est pareil
Partager