Die Übergabe von Zeichenketten von der DLL an das Anwenderprogramm ist immer durch die Übergabe eines Zeigers auf einen Speicherbereich und als weiteren Parameter einen Integer-Wert für dessen Länge (in Zeichen) definiert. Es werden grundsätzlich nur so viele Zeichen kopiert, dass es keinen Überlauf in diesem Bereich gibt, die Zeichenketten sind immer ´\0´-terminiert. Bei Bedarf (wenn der Puffer zu klein ist) wird der übergebene String also gekürzt und unvollständig zurückgegeben. Achten Sie auf den Fehlercode LL_ERR_BUFFERTOOSMALL.
Die Parameter werden soweit möglich, auf Korrektheit überprüft. Während der Programmentwicklung lohnt es sich also, den Debug-Modus einzuschalten (siehe LlSetDebug()) und die Rückgabewerte zu überprüfen. Später können Sie dann die Parameterüberprüfung explizit ausschalten (LL_OPTION_NOPARAMETERCHECK).
Bei Delphi ist zu beachten, dass die Routinen null-terminierte Zeichenketten benötigen und zurückgeben, wie es bei Windows-Funktionen üblich ist. Im Bedarfsfall müssen die Pascal-String zu C-String Konvertierungsroutinen benutzt werden.
Bei C oder C++ muss die C-Konvention beachtet werden, so dass Sie in Quelltexten für '\', z. B. in Pfadangaben, dieses doppelt eingeben müssen: "c:\\temp.lbl" statt "c:\temp.lbl".
Beispiel:
INT nSize = 16000;
LPWSTR pszBuffer = new TCHAR[nSize];
INT nResult = <API>(hJob,...,pszBuffer,nSize);
if (nResult == LL_ERR_BUFFERTOOSMALL)
{
nSize = <API>(hJob,...,NULL,0);
ASSERT(nSize > 0);
delete[] pszBuffer;
pszBuffer = new TCHAR[nSize];
nResult = <API>(hJob,...,pszBuffer,nSize);
}
...
delete[] pszBuffer;