INDY - Réception des données en hexadécimal
Bonjour tout le monde
J'ai un terminal distant qui envoie les données en hexadécimal: le problème est qu'après réception des données côté application (utilisant les composants INDY) les données que je reçois sont au format ASCII; certains caractères bizarres apparaissent dans le TMemo que j'utilise pour afficher les données reçues.
Est-il possible de recevoir les données directement en hexadécimal?
Cordialement,
M
Un exemple vaut milles explications :)
Citation:
Envoyé par
Aka Guymelef
Bonjour,
quand tu dis qu'il envoie des données en héxadécimal, est-ce que cela veut dire que tu reçoit tes données dans une chaîne avec représentation en héxadécimal (0-9A-F) ou bien que c'est des données binaire que tu reçoit directement ?
Est-ce que par hasard ton terminal n'enverrait pas de l'Unicode (1 caractère sur deux octets) plutôt que de l'Ansi (1 caractère sur un octet). Si tu reçoit de l'Unicode alors ton TMemo n'appréciera pas du tout la chaîne que tu essayes de lui faire afficher puisque par défaut les composants Delphi ne gère que l'Ansi.
D'abord, Merci de ta réponse Aka Guymelef.
Voici la trame qui s'affiche sur le TMemo:
53X @'ÿÿ™™ + données texte (température, date et heure: exemple: 18082008,15C (Celcius)).
Donc en fait, la première partie est en hexa et la seconde partie est en ASCII.
Ce que je voudrais faire c'est afficher dans le Memo les données hexa comme ceci : 62 35 33 58 01 20 40, le reste des données ne pose pas problème.
Voici la méthode execute de mon TidTCPServer:
with AThread.Connection do
begin
Trame := ReadLn;
memoLog.Lines.Add(Trame);
end
La solution que j'ai trouvé est de convertir la première partie de "trame" en hexa, puis de concaténer le résultat (variable de type string) avec le reste de "trame" puis d'afficher le tout sur le TMemo.
Le résultat est correct mais ce que je voudrais savoir s'il est possible de recevoir "trame" directement en hexadécimal (comme ceci :62 35 33 58 01 20 40 27 0F FF FF 99 99 95....) et de les afficher directement sur le TMemo (sans avoir à convertir les données en hexa puis de mettre le résultat dans une variable de type string).
Merci d'avance