Deklaration der DEVMODE-Struktur in LlSetPrinterInPrinterFile für den C++ Builder

Gilt ab List & Label 15
Problem:
Es kann bei der Verwendung der Funktion LlSetPrinterInPrinterFile in seltenen Fällen im C++ Builder zur folgenden Linkermeldung kommen:
[ILINK32 Error] Error: Unresolved external '__fastcall L19::TL19_::LlSetPrinterInPrinterFile(unsigned int, const System::UnicodeString, int, const System::UnicodeString, const _devicemodeW * const)' referenced from ...


Lösung:
Öffnen Sie das Package “cbpack” und bearbeiten Sie die Datei “l19.pas”. Dort passen Sie die Deklaration und Implementierung für LlSetPrinterInPrinterFile dahingehend an, dass Sie das “const” für die DEVMODE-Struktur entfernen. Die Codepassagen sollten dann wie folgt aussehen:

...
function LlSetPrinterInPrinterFile(ProjectType: cardinal; const ProjectName: TString; PrinterIndex: integer; const PrinterName: TString; DevModePointer: _PCDEVMODEW): integer;
function LlSetPrinterInPrinterFile(ProjectType: cardinal; const ProjectName: TString; PrinterIndex: integer; const PrinterName: TString; DevModePointer: _PCDEVMODEA): integer;
...
function TL19_.LlSetPrinterInPrinterFile(ProjectType: cardinal;
const ProjectName: TString;
PrinterIndex: integer;
const PrinterName: TString;
DevModePointer: _PCDEVMODEW
): integer;

function TL19_.LlSetPrinterInPrinterFile(ProjectType: cardinal;
const ProjectName: TString;
PrinterIndex: integer;
const PrinterName: TString;
DevModePointer: _PCDEVMODEA
): integer;

begin
    Result := cmbtll19.LlSetPrinterInPrinterFile(hTheJob, ProjectType, PTChar(ProjectName),
    PrinterIndex, PTChar(PrinterName), DevModePointer);
end;
...


Kompilieren Sie anschließend zunächst das Package und dann Ihre Anwendung.

IDKBTD000751 KBTD000751