Pb conversion de caractères après reception de WM_COPYDATA
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#:
Citation:
l'id de l'expediteurr¾p
¸°
—é|Ë?ý‚ R¸6É
ÿ%hüv¤$
7.76876924197368E-317
0
Attendu :
Citation:
l''id de l''expediteur
Une info
Un commentaire
123.456
789.123;
J'ai cherché du côté de [MarshalAs(UnmanagedType.LPStr)] mais l'affichage ne correspond toujours pas...
Côté C# :
Code:
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()); |
Mon code côté Delphi :
Code:
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; |
Le fait que le string soit limité en taille à 255 caractères a t il une influence ?
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