View Single Post
Old 16-03-2008, 20:59   #2
kernel::panic
Registered User
 
Iscritto dal: Feb 2008
Messaggi: 77
Se vuoi un array Managed basta fare "stringa".ToCharArray();

Se invece vuoi un reale puntatore è un pò più incasinato... Purtroppo non ho mail lavorato col C++ Managed, ma la funzione Marshal.StringToHGlobal???() dovrebbe funzionare come in C#...

Questo è un esempio in C#:
Codice:
IntPtr ptrANSI = IntPtr.Zero;
IntPtr ptrUnicode = IntPtr.Zero;

try
{
	// Il char* del C++
	char* pippo = (char*)(ptrANSI = Marshal.StringToHGlobalAnsi("pippo ANSI"));

 	// Il wchar_t* del C++
	char* pluto = (char*)(ptrUnicode = Marshal.StringToHGlobalUni("pluto UNICODE"));

	// usa pippo & pluto

}
catch
{ }
finally
{
	if(ptrANSI != IntPtr.Zero)
		Marshal.FreeHGlobal(ptrANSI);

	if(ptrUnicode != IntPtr.Zero)
		Marshal.FreeHGlobal(ptrUnicode);
}
PS: potresti provare anche l'oggetto StringBuilder che nelle chiamate alla API di sistema può sostituire il char*

Ciao

Ultima modifica di kernel::panic : 16-03-2008 alle 21:02.
kernel::panic è offline   Rispondi citando il messaggio o parte di esso