Problème de transfert TCP/IP entre Delphi/Windows et Lazarus/Linux
Bonjour à Tous,
j'ai besoin d'un coup de pouce pour comprendre mon problème.
Voilà depuis Delphi (sous Windows) j'envoi via TCPServer un buffer de type Record avec le code suivant
Structure du record dans Lazarus et Delphi
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Type
tMonRecord = Packed Record
MaVar1:String[20];
MaVar2:array[0..5] of array[0..5] of String[1];
MaVar3:array[0..5] of array[0..5] of String[1];
End;
Var
MonRecord:^tMonRecord;
Procedure .....envoi
For i := 0 To Form1.ServerSocket4.Socket.ActiveConnections - 1 Do
Form1.ServerSocket4.Socket.Connections[i].Sendbuf(MonRecord, Sizeof(tMonRecord));
end; |
Sous Lazarus (Linux) avec {$Mode Delphi}{$H+}
j'utilise le composant indy TidTCPclient
La structure du record est identique à la différence de ma déclaration de variable MonRecord:TMonrecord sans ^ qui provoque une erreur
Code:
1 2 3 4 5 6 7 8 9 10 11
| Var
MonRecord:TMonrecord
RecBuf:TidBytes
et je réceptionne avec le code suivant
Procedure .....reception
idTCPClient1.socket.readBytes(Recbuf, Sizeof(tMonRecord));
BytesofRaw(RecBuf,MonRecord,Sizeof(tMonRecord));
end; |
Lorsque je reçois les données j'ai des caractères genre °°°°°°° qui n'on rien à voir et des carrés avec 2 chiffres en haut et en bas ,
un petit coup de main serais bienvenue
Merci d'avance
Cordialement
Oscar