String-Parameter in API-Funktionen

Veröffentlicht am 04.03.2005

Access mit API-Funktionen erweitern.

Das Zusammenspiel zwischen String-Parametern in VBA und C ist mit etwas Schwierigkeit verbunden, insbesondere wenn Sie Stringwerte aus dem Windows-API erwarten. Ehe eine API-Funktion eine Zeichenkette von Access modifizieren kann, müssen zwei Bedingungen erfüllt sein:

Der String muß als ByVal-Parameter deklariert werden. Erst wenn Sie den gesamten String-Inhalt, an den ein NULL-Zeichen angehängt ist, an die ­Funktion übergeben, kann der String bearbeitet werden. 

Der String muss lang genug sein, um das Funktionsergebnis unterbringen. Die API-Funktion wird den in Access deklarierten String nicht verlängern! 

Das folgende Beispiel ermittelt das Windows Temp-Verzeichnis. Vorher wird der Variable strTempVerz mit 512 NULL-Zeichen initialisiert – normalerweise genügend für einen Pfadnamen. Der String wird außerdem als ByVal-Parameter (lpBuffer in der Deklaration) an die API-Funktion GetTempPath übergeben:

' API-Funktion deklarieren 
Declare Function GetTempPath Lib "kernel32" Alias _
        "GetTempPathA" (ByVal nBufferLength As Long, _ 
        ByVal lpBuffer As String) As Long 
Private Sub btnTempDir_Click() 
Dim ret As Long, length As Long, strTempVerz As String 

    strTempVerz = String$(512, 0)   ‘ String mit 512 NULLs initialisieren 
    length = Len(strTempVerz) 
    ret = GetTempPath(length, strTempVerz) 

    If ret <> 0 Then ‘ Länge des zurückgegebenen Pfadnamen 
        ‘ Ergebnis im Textfeld anzeigen (ohne zusätzliche NULLs) 
        txtTempVerz = Left$(strTempVerz, ret) 
    Else 
        Debug.Print "Feher in btnTempDir_Click" 
    End If 
End Sub

Unsere Dienstleistungen

Als starker Partner an Ihrer Seite unterstützen wir Sie in folgenden Breichen:

Access-Programmierung

Benötigen Sie Unterstützung bei der Programmierung von Access-Anwendungen? Wir bieten die gesamte Bandbreite von der Access-Programmierung auf Stundenbasis bis zur Durchführung eines Software-Projektes als Auftragsarbeit an. Kontaktieren Sie uns für ein kostenloses Erstgespräch.

JETZT KONTAKTIEREN

Software-Beratung

Haben Sie ein Software-Projekt und Sie wissen nicht, ob Access die richtige Plattform ist? Wir haben über 20 Jahre Erfahrung beim Erstellen von Windows-, Web und mobilen Anwendungen. Kontaktieren Sie uns für eine kostenlose Erstberatung.

JETZT KONTAKTIEREN