La page que vous citez ne reproduit pas très bien les messages. Voici ce que Rémy a vraiment écrit:
SendCmd() est uniquement conçu pour les commandes/paramètres textuels. Vous auriez pour envoyer les données binaires après la sortie de SendCmd(), et le serveur devra lire les données binaires après avoir renvoyé une réponse au client. Pour exemple:
--- client ---
begin
IdTCPClient1.SendCmd('DoIt', 200);
// send binary data, such as with Write(TStream) or Write(TIdBytes)...
end;
Les méthodes Write
dont il parlait sont membres de la classe TIdIOHandler
. Votre objet TIdTCPConnection
a une instance de cette classe dans sa propriété IOHandler
, et en effet c'est ce que la fonction SendCmd
utilise pour envoyer sa chaîne.
La notation Write(TIdBytes)
moyens d'utiliser la méthode Write
qui accepte un paramètre TIdBytes
pour son entrée.
Si les données binaires sont déjà dans un flux ou un tableau dynamique d'octets, vous pouvez en passer un directement à la méthode Write
. Il y a aussi la méthode WriteFile
qui enverra un fichier externe entier si vous fournissez le nom du fichier. Si vous utilisez la version du flux, vous avez la possibilité d'inclure automatiquement la longueur du flux.
Si vous n'avez pas vos données dans une de ces structures déjà, vous pouvez écrire les données fragmentaires avec les méthodes Write
qui acceptent les types entiers de différentes tailles, ou vous pouvez copier vos données dans un TMemoryStream
et passer ensuite cela à Write
.
Merci Rob, la page m'a dérouté à cause de son formatage. Merci pour l'aide. – Wodzu