Forums Neueste Beiträge
 

String übergabe an externe DLL Funtion

07/05/2008 - 23:36 von Johann Obermayr | Report spam
Hallo,

Habe eine externe DLL.
Darin ist eine Funktion enhalten, welche ein const char * braucht
LslOnline(const char *lpText)

Von VB6.0 & .NET aus kann man mit
Declare Function LslOnline Lib "Some.DLL"( ByVal lpName As String ) As
Integer
übergeben.
Das Funktioniert anscheinend so.

Wenn ich .NET für Pocket PC verwende, dann funktioniert das nicht mehr.
Ich nehme an, das das normale VB hinter String einen ASCII String hàlt
und .NET für PocketPC einen Unicode string.
Ist das richtig ?

Wie kann ich in .NET für PocketPC den Unicode-String aus ASCII-String
konvertieren ?
Oder in der deklaration angeben ?
Gibt es unter VB unterschiedliche String Typen ?
Wie t.Bsp.: CStringA, CStringW in C++ für ASCII und Unicode ?

Danke
Jimmy
 

Lesen sie die antworten

#1 Herfried K. Wagner [MVP]
10/05/2008 - 14:05 | Warnen spam
"Johann Obermayr" schrieb:
Habe eine externe DLL.
Darin ist eine Funktion enhalten, welche ein const char * braucht
LslOnline(const char *lpText)

Von VB6.0 & .NET aus kann man mit
Declare Function LslOnline Lib "Some.DLL"( ByVal lpName As String ) As
Integer
übergeben.
Das Funktioniert anscheinend so.

Wenn ich .NET für Pocket PC verwende, dann funktioniert das nicht mehr.
Ich nehme an, das das normale VB hinter String einen ASCII String hàlt
und .NET für PocketPC einen Unicode string.
Ist das richtig ?



Zeichenfolgen in VB6/.NET sind immer Unicode-Zeichenfolgen. Der
VB6-Marshaller unterstützt jedoch nur das Marshalling von
Windows-ANSI-codierten Zeichenfolgen. Deshalb wird unter VB6 die
VB6-Unicode-Zeichenfolge in eine Windows-ANSI-Zeichenfolge umgewandelt (mit
allfàlligem Informationsverlust) und danach wieder zurückgemarshallt (von
Windows-ANSI in Unicode).

In .NET kann über 'Declare [Auto | Ansi | Unicode]' angegeben werden, wie
das Marshalling zu erfolgen hat.

Die '*A'-Funktionen sind übrigens Windows-ANSI-Funktionen, nicht ASCII
(7-Bit-Codierung ohne Umlaute).

M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>

Ähnliche fragen