Warum werden Strings bei APIs als ByVal deklariert?

10/07/2008 - 15:59 von Remo Grütter | Report spam
Hallo

Tja, der Titel sagt eigentlich schon alles - effektiv wird doch ein
Pointer (Adresse der ersten vom String belegten Speicherzelle)
übergeben. So wie bei ByRef. Was soll also die Verwirrung?

Merci für die Aufklàrung...

Remo
 

Lesen sie die antworten

#1 Thorsten Albers
10/07/2008 - 19:25 | Warnen spam
Remo Grütter schrieb im Beitrag
...
Tja, der Titel sagt eigentlich schon alles - effektiv wird doch ein
Pointer (Adresse der ersten vom String belegten Speicherzelle)
übergeben. So wie bei ByRef. Was soll also die Verwirrung?



In VB steht ein mit 'As String' deklariertes Symbol für einen Zeiger auf
einen Zeiger auf einen String. Der 'Zeiger auf einen Zeiger' ist die
'Referenz' ('ByRef', ermittelbar mit VarPtr()), der 'Zeiger auf einen
String' ist der 'Wert' ('ByVal', ermittelbar mit StrPtr()). APIs erwarten
üblicherweise den 'Zeiger auf einen ANSI-String', als 'ByVal' (die
Umwandlung von Unicode in ANSI erledigt VB intern automatisch).

-
Thorsten Albers albers(a)uni-freiburg.de
-

Ähnliche fragen