Error during printing [erledigt]

Von Ausgaben mit der Gra-Engine über Generatoren bis zum Export in diversen Formaten

Moderator: Moderatoren

Antworten
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Error during printing [erledigt]

Beitrag von peternmb »

Hallo,

ich bekomme gelegentlich bei einer kleinen Routine einen Absturz mit einer Fehlermeldung die ich nicht richtig zuordnen kann.
Ich erstelle dabei eine kleine 3-zeilige txt-Datei.

Code: Alles auswählen

proc mach_info
//
LOCAL webdatei:=Hauptpfad+"\Export\Web\TU"+strzero(A->tnr,3,0)+"\"+rtrim(b151_sle4:getData())+".txt"
//
set console off
set printer to (webdatei)
set printer on
//
? dtoc(A->TDATUM)
? rtrim(ConvToAnsiCP(b151_sleW1:getData()))
? rtrim(ConvToAnsiCP(b151_sleW2:getData()))
//
set printer off
set printer to
set console on		
//
return
Die Datenbank in ->A ist definitv geöffnet, den Wert sieht man auch in der Fehlermeldung:
Xbase++ Version : Xbase++ (R) Version 1.90.355
Betriebssystem : Windows-10oError:args :
-> VALTYPE: C VALUE: 05.03.2020
oError:canDefault : N
oError:canRetry : Y
oError:canSubstitute: N
oError:cargo : NIL
oError:description : Error during printing
oError:filename :
oError:genCode : 101
oError:operation : qOut
oError:osCode : 6
oError:severity : 2
oError:subCode : 4313
oError:subSystem : BASE
oError:thread : 1
oError:tries : 5
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
aufgerufen von MACH_INFO(704)
Zeile 704 ist die LOCAL-Definition des Dateinamens
Zuletzt geändert von peternmb am Mo, 09. Mär 2020 16:43, insgesamt 1-mal geändert.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Error during printing

Beitrag von Jan »

Hallo Peter,

der Fehler geht auf ein qout. Das ist nicht die LOCAL-Zeile. Das muß eine der ?-Zeilen sein.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Error during printing

Beitrag von brandelh »

Die Zuordnung im LOCAL ist zwar erlaubt, aber gerade im Fehlerfalle wird das dann schwierig und das debuggen wird erschwert.
Wie JAN schon schrieb muss das qout von den ? her kommen, es könnte sein, dass ein ungültiger Dateinamen entsteht,
beim set printer sollte der zwar schon auffallen, aber eventuell wird erst beim ersten ? tatsächlich auf den zugegriffen.
Ansonsten was ist A-> ein gültiger Alias ?
Ich erstelle dabei eine kleine 3-zeilige txt-Datei.
Aber warum SET PRINT ON ?

Ich hätte das direkt mit

Code: Alles auswählen

SET ALTERNATE TO (webdatei)
? ...
? ...
SET ALTERNATE TO 
erledigt, die Drucker Umleitung wird bei Windows immer problematischer und bei reinem Text ist das sicherer.
Gruß
Hubert
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: Error during printing

Beitrag von peternmb »

Jan hat geschrieben: Mo, 09. Mär 2020 12:26 Hallo Peter,

der Fehler geht auf ein qout. Das ist nicht die LOCAL-Zeile. Das muß eine der ?-Zeilen sein.

Jan
ja, stimmt, es ist diese Zeile
? dtoc(A->TDATUM)
Nur wieso die Fehlermdung, das Datum ist doch da - steht auch in der errorlog :banghead:
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Error during printing

Beitrag von Tom »

Die Xbase++-Fehlerdatei von Anno Zopf sagt zum Fehlercode 101 "Caused by: "QOut()" etc. to off-line/non-existing printer".
Herzlich,
Tom
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Error during printing

Beitrag von Martin Altmann »

Enthält der Dateiname (b151_sle4 ) ein Leerzeichen oder ein Sonderzeichen wie %$":;?

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Error during printing

Beitrag von Tom »

Ich würde drei Daten/Variableninhalte auch nicht auf so kompliziertem Weg loggen, sondern simpler mit MemoWrit, den Low-Level-Funktionen (FOpen(), FWrite(), FClose()) oder der Tools-Funktion StrFile(), die auch appenden kann. Aber das ist nur ein Hinweis, der nicht bei der Fehlerbeseitigung helfen wird. Ist eine alte Forentradition: Statt mit auf Fehlersuche zu gehen, erklärt man, dass und wie man das ganz anders machen würde, was da versucht wird. :lol:
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Error during printing

Beitrag von brandelh »

Nun ja TOM,

wenn der Dateiname nicht fehlerhaft und der Inhalt OK ist, ist halt die Erstellung einer ALTERNATE Datei viel sicherer als eine Druckerumlenkung auf Fesplatte.
Die Liste der Probleme mit SET PRINTER TO hier ist lang und wird nicht kürzer ;-)
Gruß
Hubert
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Error during printing

Beitrag von Martin Altmann »

Tom,
darum ja mein Hinweis. Der Dateiname setzt sich zusammen aus einem String, einer Zahl mit führenden Nullen und dem Inhalt eines SLEs, von dem die anhängenden Leerzeichen entfernt wurden.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: Error during printing

Beitrag von peternmb »

Martin Altmann hat geschrieben: Mo, 09. Mär 2020 12:49 Enthält der Dateiname (b151_sle4 ) ein Leerzeichen oder ein Sonderzeichen wie %$":;?

Viele Grüße,
Martin
das weiß ich leider nicht, die errorlog bekomme ich vom Kunden automatisch gemailt - könte aber die Ursache sein, da das Problem nicht immer auftritt
Aber warum SET PRINT ON ?
vermutlich, weil ich das schon immer so mache...

Ich werde das auf "set alternate" ändern und auf Leer- oder Sonderzeichen prüfen, dann sollte Ruhe sein.

PS.: wie kann ich am einfachsten auf Sonderzeichen prüfen???
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Error during printing

Beitrag von Wolfgang Ciriack »

Am einfachsten einfach alle nicht erlaubten Zeichen im Dateinamen entfernen:

Code: Alles auswählen

dateiname := charrem(' ~"#%&*:<>?/\{|}', dateiname)
oder ohne die Tools3 eine Funktion schreiben, die alle nicht erlaubten Zeichen nacheinander entfernt:

Code: Alles auswählen

dateiname := StrTran(dateiname, "#", "")
dateiname := StrTran(dateiname, "/", "")
.....
Viele Grüße
Wolfgang
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: Error during printing

Beitrag von peternmb »

Wolfgang Ciriack hat geschrieben: Mo, 09. Mär 2020 15:30 Am einfachsten einfach alle nicht erlaubten Zeichen im Dateinamen entfernen:

Code: Alles auswählen

dateiname := charrem(' ~"#%&*:<>?/\{|}', dateiname)
oder ohne die Tools3 eine Funktion schreiben, die alle nicht erlaubten Zeichen nacheinander entfernt:

Code: Alles auswählen

dateiname := StrTran(dateiname, "#", "")
dateiname := StrTran(dateiname, "/", "")
.....
Ich muss die Sonderzeichen nicht entfernen - der Kunde bekommt einen Hinweis, dass hier keine Sonderzeichen erlaubt sind.
Ich hatte gehofft, dass ich irgendwie generell auf Sonderzeichen prüfen kann (z.B. über chr(x)) ohne jedes einzeln zu benennnen.
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Error during printing

Beitrag von Koverhage »

Ja wie Wolfgang ja schon schrieb.
IF sle $ "hier deine Sonderzeichen"
Gruß
Klaus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Error during printing

Beitrag von brandelh »

Ich habe SLE erstellt welche z.B. nur Datumswerte oder Zahlen eingeben können.
Wenn du willst kannst du dir in der Wissensbasis ansehen wie das geht:

:arrow: https://www.xbaseforum.de/viewtopic.php?f=16&t=499
Gruß
Hubert
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: Error during printing [erledigt]

Beitrag von peternmb »

Danke, ich muss jetzt erst einmal warten ob ich immer noch Absturzmeldungen erhalte.
Antworten