BEISPIEL
HINWEIS
HINWEIS
API-Funktion mit Stringparameter:
Declare Function CharToOem& Lib "user32" Alias "CharToOemA" (ByVal lpszSrc$, ByVal lpszDst$)
Die Declare-Anweisung können Sie entweder im Declare-Abschnitt eines Code-Moduls oder eines Formu-
lars eingeben. Die Syntax unterscheidet sich jedoch zwischen Code-Modul und Formular.
Code-Modul:
Declare Function ....
Formular:
Private Declare Function ...
In einem Formular muss die Deklaration als Private erfolgen, in einem Modul kann die Deklaration Private
sein.
Bestimmen Sie bereits im API-Viewer die Art der Deklaration, so sparen Sie sich unnötige Tipparbeit.
Wert oder Zeiger?
C-Programmierern dürften die verschiedenen Möglichkeiten, Variablen an eine Funktion zu übergeben,
bereits hinreichend bekannt sein. Visual Basic-Programmierer sind erfahrungsgemäß mit den internen
Abläufen nicht ganz so vertraut, deshalb an dieser Stelle eine kurze Auffrischung.
Es gibt zwei grundsätzliche Verfahren, um eine Variable an eine Prozedur zu übergeben:
Sie übergeben den Wert der Variablen, oder
Sie übergeben einen Zeiger (Pointer) auf die Variable bzw. deren Wert.
Im ersten Fall erstellen Sie quasi eine Kopie der Variablen und übergeben die Kopie an die Funktion, im
zweiten Fall »sagen« Sie der Funktion, wo sich die Variable im Speicher befindet. Daraus resultieren auch
die konkreten Anwendungsfälle beider Varianten. Da bei der Zeiger-Übergabe die eigentliche Variable »be-
kannt« ist, kann diese nicht nur gelesen, sondern auch geschrieben werden. Bei der Übergabe des Wertes
(Kopie) kann dieser zwar auch verändert werden, die Variable selbst hat damit jedoch nichts mehr zu tun.
Halten Sie die beiden o.g. Verfahren der Variablenübergabe bei der API-Programmierung unbedingt aus-
einander. Verwechslungen führen (fast) immer zum Programm-/DLL-Absturz.
Bleibt noch die Frage offen, wie Sie der DLL den Unterschied klar machen. Visual Basic bietet dafür die
ByVal-Option. ByVal verwenden Sie, wenn der Wert einer Variablen übergeben wird, in allen anderen
Fällen wird an die DLL ein Zeiger auf die Variable übergeben, und die DLL kann die Variable ändern, was
sonst nicht möglich wäre.
833
API- und DLL-Einbindung

Get Microsoft Office Access 2007-Programmierung - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.