drucken - begin sequence - end sequence

Moderator: Moderatoren

Antworten
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

drucken - begin sequence - end sequence

Beitrag von Ewald »

Hallo zusammen,
never change a running system - aber ich will es trotzdem machen und alles von express 1.8 auf 1.9 umstellen.
Dabei ergeben sich einige Druckprobleme die ich versuche nachzuvollziehen.
Nach der Umstellung knallen Druckjobs ab, wenn ich im Druckerdialog auf "Abbruch" klicke. Das fange ich im
Quellcode eigentlich mit "begin und end sequence" ab. Unter 1.8 mit Erfolg.
Trotzdem beglückt mir das System bei gleichem Quellcode unter 1.9 mit der Fehlermeldung "oprinter.iexcel" falscher Datentyp.
Ich habe einige Originalbeispiele aus Express 1.9 nachvollzogen und mal knallt es und mal nicht, wenn ich im Druckerdialog auf "
Abbruch" klicke.
Die Ursache ist diese:
Die Reihenfolge von begin und end sequence ist in den Beispielen (fast) immer wie folgt. Aber eben nur fast.

Code: Alles auswählen

begin sequence
dcprint on to oprinter
if kaputt
   break
endif
end sequence
dcprint off
So habe ich meine gesamten Quellcodes aufgebaut. Ist aber wohl nicht richtig.
In den Express Beispielen, die nicht abknallen, ist die Reihenfolge aber so.

Code: Alles auswählen

begin sequence
dcprint on to oprinter
if kaputt
   break
endif
dcprint off
end sequence
Bevor ich jetzt anfange meine Quellcode durchzuändern meine Frage:
Was ist denn wohl richtig(er)?
Erst "end sequence" und dann "printer off" oder umgekehrt ?
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: drucken - begin sequence - end sequence

Beitrag von brandelh »

Hi,

ich habe zwar kein express, aber ich könnte mir vorstellen, dass dcprint off den Druckjob schließen will.
Wenn der aber schon durch den Abbruch geschlossen wurde, könnte das zu Problemen führen.
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9357
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: drucken - begin sequence - end sequence

Beitrag von Tom »

Hallo, Ewald.

"DCPRINT OFF" wird (siehe ..\INCLUDE\DCPRINT.CH Deiner Express++-Installation) zu DC_PrinterOff() umgewandelt. Wenn Du bei "DCPRINT OFF" "PRINTER oPrinter" angibst, wird dieses Objekt benutzt, aber wie Du Dir im Quellcode (_DCPRC.PRG) ansehen kannst, sucht sich "DC_PrinterOff()" über "DC_PrinterObject()" das Druckerobjekt, wenn Du keines angegeben hast. Das scheitert, wenn es keines gibt. Vielleicht war das in 1.8 anders, aber so ist es richtiger. Wenn das DCPRINT OFF also außerhalb der Sequenz erfolgt und die Sequenz im/vor dem DCPRINT ON abbricht, knallt diese Funktionalität. Hubert hat also recht. Alles andere ist ja auch nicht sehr sinnvoll - warum außerhalb einer Sequenz etwas beenden, das innerhalb einer Sequenz (und nur dort!) begonnen wurde?

Edit: Du kannst natürlich auch DCPRINT ON vor die Sequenz setzen. :wink: Die Angabe eines Druckerobjektes ist immer hilfreich, vor allem, wenn man mit Multithreading arbeitet.
Herzlich,
Tom
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: drucken - begin sequence - end sequence

Beitrag von Ewald »

HI Hubert, Hi Tom
bis es jetzt geknallt hat, habe ich da überhaupt nicht drüber nachgedacht und nur das abgeschrieben, was in Beispielen steht.
Und da steht sowohl in 1.8 als auch in 1.9 in den Beispielen zu "DCPrint on" und "DCPrint off" dieser Code:

Code: Alles auswählen

IF !lPreview
  DC_Impl(cScrn)
ENDIF
END SEQUENCE
DCPRINT OFF
RETURN
Das geht jetzt wohl schief, weil in 1.9 die Excel-Ausgabe dazugekommen ist.
Gut dass ich mir einen Editor geschrieben habe, der mir bei Bedarf alle Quellcodes in einem Rutsch durchändert. Dem muss ich
jetzt nur noch beibringen, dass er zwei Zeile finden und gegeneinander austauschen muss 8)
Gruß
Ewald
Antworten