Zitat von
toms:
Zitat von
Samashy:
Ändere ich alles AnsiChar und AnsiString, kann die Version nicht mehr ermittelt werden.
Hallo Romy, was meinst du damit? Wie wird die Version ermittelt?
Ich hänge beim Umschreiben der
VCL doch an einer anderen Stelle.
Es kann kein Printjob gefunden werden. Die Fehlermeldung ist witzig... bestand erst aus chinesischen Zeichen und nun nach AnsiStringnutzung aus ???????
Egal...
Delphi-Quellcode:
{Open the Main PrintJob}
FPrintJob := FCrpeEngine.PEOpenPrintJob(PChar(FReportName));
FPrintJobs[0] := IntToStr(FPrintJob);
{If PrintJob is zero, generate error}
if FPrintJob = 0 then
begin
Result := False;
case GetErrorMsg(0,errNoOption,errEngine,'','OpenPrintJob <PEOpenPrintJob>') of
errIgnore : Exit;
errAbort : Abort;
errRaise : raise ECrpeError.Create(FLastErrorNumber, FLastErrorString);
end;
end;
Hier kommt für FPrintJOb 0 raus.
Delphi-Quellcode:
function TCrpeEngine.PEOpenPrintJob (reportFilePath : PChar): Smallint;
var
CrpeOpenPrintJob : TFarProc;
begin
CRDEngineError('');
Result := -1;
{Check if Engine is loaded}
if CRDEngine = 0 then
begin
CRDEngineError(CRD_ENGINE_NOT_LOADED);
Exit;
end;
CrpeOpenPrintJob := GetProcAddress(CRDEngine, 'PEOpenPrintJob');
if CrpeOpenPrintJob = nil then
CRDEngineError('PEOpenPrintJob')
else
Result := TPEOpenPrintJob(CrpeOpenPrintJob)(reportFilePath);
end;
GetProcAddress ermittelt eine Adresse. Ich verstehe aber nicht wie der Aufruf für das Result funktioniert.
TPEOpenPrintJob = function (reportFilePath: PChar): SmallInt; stdcall;
Bitte bitte helft.