Recupérer un String d'une fonction
Bonjour,
J'ai une librairie écrire en C avec la fonction :
Code:
1 2 3 4 5 6 7 8 9 10 11
| bool _stdcall HAS_V1_VEC_ReadLn(HWND hWnd,wchar_t *s,int lim,DWORD flag)
{
char secur[lsecur]={0};
bool b= VEC_ReadLn(hWnd,secur,min(lsecur,lim),flag);
//pour debugger le c#
//MessageBox(hWnd,secur,"DEBUG",MB_SYSTEMMODAL);
//
ansi2unicode(secur,s);
return b;
} |
La variable secur est remplit de caractére et je le convertit en unicode : C'est bon ! Rien à dire !
La fonction VEC_Readln Fonctionne ! OK, il remplit la variable secur qui contient la chaine saisie ; bref ;
En C# , dans mon application , je recupére bien la chaine en sortie :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| [DllImport("has_x64.dll", CharSet = CharSet.Unicode)]
unsafe internal static extern bool HAS_V1_VEC_ReadLn(IntPtr hWnd, String s, uint lim, uint flag);
.....
.....
class XXXXX : public UserControl
...
..
public String Readln()
{
String r="";
Focus();
HAS_V1_VEC_ReadLn(this.Handle, r, 256, 1);
return r;
}
....
...
} |
La méthode C# Readln que j'ai définit appelle ma librairie écrite en C ,
CA fonctionne ;
Mais est - ce conforme pour le retour de la chaine "String" depuis ma librairie ecrire en C ?
Sinon comment le faire en conformité ?
Quand la chaine est trop longue , j'ai un plantage quand je sors de mon application C#.
Voilà ;