Bonjour
Je passe des valeurs d une application Delphi à une application C#.
Lors de la reception dans l appli C#, le texte affiché ne correspond pas vraiment à celui envoyé :
Affichage C#:
Attendu :l'id de l'expediteurr¾p
¸°
—é|Ë?ý‚ R¸6É
ÿ%hüv¤$
7.76876924197368E-317
0
J'ai cherché du côté de [MarshalAs(UnmanagedType.LPStr)] mais l'affichage ne correspond toujours pas...l''id de l''expediteur
Une info
Un commentaire
123.456
789.123;
Côté C# :
Mon code côté 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
20
21
22
23
24 public struct COPYDATASTRUCT { public IntPtr dwData; public int cbData; [MarshalAs(UnmanagedType.LPStr)] public string Expediteur; [MarshalAs(UnmanagedType.LPStr)] public string Information; [MarshalAs(UnmanagedType.LPStr)] public string Commentaire; public double Valeur1; public double Valeur2; } mystr = new COPYDATASTRUCT(); Type mytype = mystr.GetType(); mystr = (COPYDATASTRUCT)m.GetLParam(mytype); Trace(mystr.Expediteur); Trace(mystr.Information); Trace(mystr.Commentaire); Trace(mystr.Valeur1.ToString()); Trace(mystr.Valeur2.ToString());
Le fait que le string soit limité en taille à 255 caractères a t il une influence ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 type PEnvoiMSG = ^TEnvoiMSG; TEnvoiMSG = packed record Expediteur: string[255]; Information: string[255]; Commentaire: string[255]; Valeur1: double; Valeur2: double; end;
Je débute et ne comprends absolument pas pourquoi un tel résultats étant donné que les déclarations ont le bon type et que je n ai aucun message d'erreur./avertissement
Merci pour votre aide
Partager