hMailJob = LsMailJobOpen(0) // liefert NIL

Guten Tag,

LL20 + Xbase++ V2

hMailJob := LsMailJobOpen(0) // liefert NIL

Laut Doku sollte ein Handel oder im Fehlerfall 0 zurückkommen.

Hier der betroffene Codeteil:

hMailJob := LsMailJobOpen(0)
IF hMailJob == NIL
DebugPrint("hMailJob IST NIL: “, hMailJob)
ENDIF
LsMailSetOptionString(hMailJob, “Export.Mail.Provider”, “MSMAPI”)
LsMailSetOptionString(hMailJob, “Export.Mail.Body”, “demo”)
LsMailSetOptionString(hMailJob, “Export.Mail.To”, "demo@domain.com”)
LsMailSetOptionString(hMailJob, “Export.Mail.Subject”, “Test!”)
LsMailSetOptionString(hMailJob, “Export.Mail.AttachmentList”,“c:\users\public\export.pdf”)
DebugPrint(LsMailSendFile(hMailJob, 0))
LsMailJobClose(hMailJob)

Unter VC++ klappt das einwandfrei. Unter Xbase++ V2 klappt es, wenn man zuvor (oder beim Programmstart) die undokumentierte Funktion “LS20ModuleInit()” aufruft.

Warum dem so ist kann ich noch nicht sagen.

Es gibt ein Source File cmbtll20.prg + Header und ein Source File cmbtls20.prg + Header. Darin sind jeweils die LL Funktionen für XBase++ definiert. Die meisten Funktionen sind im ersten File definiert, darum geht auch alles andere bei mir.

Um die Funktionen aus cmbtls20.prg verwenden zu können, muss man LS20ModuleInit() aufrufen (nicht auf LS20ModuleExit() vergessen). In der Combit Dokumentation finde ich darüber aber keine Zeile. Das hängt wohl mit der XBase++ Implementation zusammen.

Warum es hier 2 getrennte Files mit 2 getrennten …ini() gibt ist mir eigentlich völlig unklar. IMHO sollte das alles in eine Datei.

Vielleicht hilft dieser Hinweis mal einem anderen. Sollte das alles ganz anders sein lasse ich mich gerne aufklären.