Aufrufen der Windows-API (Unterschiede bei Zeichenfolgenfunktionsvorgängen)

Gilt für: Access 2013 | Access 2016

Die Speicherformate für Text im Arbeitsspeicher sind in VBA-Code (Visual Basic für Applikationen) und Access Basic-Code unterschiedlich. (Access Basic wurde in frühen Versionen von Microsoft Access verwendet.) Text wird im ANSI-Format in Access Basic-Code und in Visual Basic im Unicode-Format gespeichert. In diesem Thema wird ein mögliches Problem bei der Verarbeitung von Zeichenfolgen in der aktuellen Version von Microsoft Access beschrieben. Weitere Informationen finden Sie unter Unterschiede bei Zeichenfolgenfunktionen.

In mehreren Windows-API-Funktionen hat die Bytelänge einer Zeichenfolge eine besondere Bedeutung. Das folgende Programm gibt beispielsweise einen ordner zurück, der in Windows eingerichtet wurde. In Microsoft Access gibt LeftB (Buffer, ret) nicht die richtige Zeichenfolge zurück. Dies liegt daran, dass die LeftB-Funktion Unicode-Zeichenfolgen verarbeitet, obwohl sie die Bytelänge einer ANSI-Zeichenfolge anzeigt. Verwenden Sie in diesem Fall die InStr-Funktion , damit nur die Zeichenfolge ohne NULL-Werte zurückgegeben wird.

Private Declare Function GetWindowsDirectory Lib "kernel32" _ 
 Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, _ 
 ByVal nSize As Long) As Long 
 
Private Sub Command1_Click() 
 Buffer$ = Space(255) 
 ret = GetWindowsDirectory(Buffer$, 255) 
 ' WinDir = LeftB(Buffer, ret) '<--- Incorrect code" 
 
 WinDir = Left(Buffer$, InStr(Buffer$, Chr(0)) - 1) 
 '<--Correct code" 
 Print WinDir 
End Sub

Siehe auch

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.