String-Parameter in API-Funktionen

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

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.

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.