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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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