Betriebssystemfehler Operation set aber nur unter Vista.

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Josef Pittl
Rookie
Rookie
Beiträge: 9
Registriert: Sa, 29. Aug 2009 13:39

Betriebssystemfehler Operation set aber nur unter Vista.

Beitrag von Josef Pittl »

Es ist schon eine weile her, da hab ich mir dieses Hausverwaltungsprogramm geschrieben. Die letzte Änderung erfolgte im Jahr 2000. Nun habe ich neue PC's erstanden und das Betriebssystem von Windows 2000 auf Windows Vista umgestellt.
Das Programm läst sich auch ganz normal Starten bringt mir aber einen Betriebssystem Fehler bei der Operation: set
Der genaue Befehl lautet Set Printer On.
Ist mir schon klar, dass das eine sehr alte methode ist, aber ich hab eigentlich keinen Bock die Druckausgaben neu zu Programmieren.
Kann mir jemand Helfen?
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Betriebssystemfehler Operation set aber nur unter Vista.

Beitrag von brandelh »

Hi,

das hängt sehr vom Drucker ab.
Mit SET PRINTER TO OBJECT kannst du jedes Windowsdruckerobjekt ansprechen.
Allerdings muss der Drucker DOS Print prinzipiell unterstützen (PCLx, ESC/x ...)
Unter Win2000 hast du damals bei der Druckerinstallation bestimmt angegeben
"JA, Drucker auch für DOS Druck benutzen" (oder so ähnlich ...)
Ob das unter Vista noch unterstützt wird :?:

Ich habe mir vor kurzem an einem Netzwerkdrucker (NET USE LPT2 ..., set printer to LPT2)
die Zähne ausgebissen. Er hat zwar einzelne Seiten gedruckt, danach aber oft minutenlang
gar nichts mehr angenommen. UNTRAGBAR -> jetzt stelle ich alle alten Ausdrucke auf meine
Druckerklasse (HB_PrintX) um 8)
Gruß
Hubert
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Betriebssystemfehler Operation set aber nur unter Vista.

Beitrag von Rolf Ramacher »

Hi Josef,

ich vermute du wirst um die neuprogrammierung nicht herumkommen, wenn Vista dieses nicht mehr unterstützt. Ich mache das mit Xbpprintdialog() - Dabei kannst du die Drucker auswählen - oder XbpPrinter() hier wird der Standarddrucker gezogen.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Josef Pittl
Rookie
Rookie
Beiträge: 9
Registriert: Sa, 29. Aug 2009 13:39

Re: Betriebssystemfehler Operation set aber nur unter Vista.

Beitrag von Josef Pittl »

Funktionieren unter xbpprintdialog() die @ z,s say "xxxxxxxxxxxxxxxx" Befehle? Das gesamte Programm wurde ursprünglich von Clipper portiert.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Betriebssystemfehler Operation set aber nur unter Vista.

Beitrag von brandelh »

Hi,

NEIN, da muss man mit den GRA Funktionen arbeiten und das ganze ist vom Rand abhängig.

Daher habe ich mir meine Druckerklasse geschrieben, die auch unter älteren Versionen schon
eine Druckerauswahl und Preview anbietet, aber nicht mit XbpPrintDialog() kompatibel ist.

Suche ruhig nach HBPrinter hier in der Wissensdatenbank oder auf meiner Homepage ;-)

HBPrinterX - Hauptseite: http://www.xbaseforum.de/viewtopic.php? ... =hbprinter
HBPrinterX - Hinweise: http://www.xbaseforum.de/viewtopic.php?f=25&t=1174
Meine Homepage kann man im Profil sehen.

Die Klasse kostet nix und hat eine Menge Vorteile. Der Größte ist, dass 0,0 links oben ist
und die Positionsangaben in 1/10 mm vom Rand gemessen werden. In die Hardwareränder
kann man zwar dennoch nicht drucken, aber der Ausdruck ändert sich im bedruckbaren Teil
nicht, beim Umschalten auf einen anderen Drucker mit mehr Rand.
Ansonsten ist die Ausrichtung ein Kinderspiel:
oHBP:PrintText(nPosX,nPosY,cTxt,cAusrichtung) // links, zentriert, rechtsbündig und ...
oHBP:PrintMemo(nPosX,nPosY,cTxt,cAusrichtung) // kann mehrzeilig auch Blocksatz drucken.
Gruß
Hubert
Josef Pittl
Rookie
Rookie
Beiträge: 9
Registriert: Sa, 29. Aug 2009 13:39

Re: Betriebssystemfehler Operation set aber nur unter Vista.

Beitrag von Josef Pittl »

Das ist eine riesen Sch........ :banghead:
Das sind so an die 100 verschiedene Ausdrucke!!!!!!!!!!!!!!!!!
Vor ich damit anfange werd ich die Leute von Microsoft "Windof" noch etwas Quälen.

Und wie seht ihr das mit dem Zusatztool List & Label? Sollte bei dieser Menge wohl etwas schneller gehen?
Gerd König
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 193
Registriert: Fr, 09. Jun 2006 7:52
Wohnort: Nähe Sömmerda

Re: Betriebssystemfehler Operation set aber nur unter Vista.

Beitrag von Gerd König »

Hallo Josef,
Und wie seht ihr das mit dem Zusatztool List & Label? Sollte bei dieser Menge wohl etwas schneller gehen?
Das kann ich nur empfehlen, wird haben vor ca. 3 Jahren begonnen unserer Ausdrucke auf L&L umzustellen. Der Enwurf neuer Formulare geht sehr zügig vonstatten, wenn erst mal das Layout mental klar ist.
Allerdings sind immer noch nicht alle Formulare umgestellt, da ich das jetzt immer erst mache, wenn eine Layout-Änderung notwendig wird.
Ich stehe jedoch nicht unter Zeitdruck, da meine alten Layouts grundsätzlich die Grafikfunktionen verwenden.

Herzliche Grüße
Gerd
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Betriebssystemfehler Operation set aber nur unter Vista.

Beitrag von Rolf Ramacher »

Hi Josef

ich teile meine Listenausdrucke. Bei den Etiketten z.B. drucke ich mit GraStringAT() aus. Bei den anderen erstelle ich Dateien als Vorlage im Format RTF. Hier gibt es nur Überschriften und Platzhalter. Ich lese die RTF-Datei ein und ersetze die Platzhalter mit strtran . Dann wird die Datei gespeichert und kann gedruckt werden. Dies mache ich mit ActiveX - Word im Hintergrund starten
zum Drucker geben Word- schließen.

Das mit der RTF-Datei hat den Vorteil, daß der Anwender sein Layout Schriftart+ Größe selbst gestalten kann. Aber die meisten lassen es so wie es ist.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Betriebssystemfehler Operation set aber nur unter Vista.

Beitrag von brandelh »

Hi,

was besser ist hängt natürlich von eigenen Vorlieben, aber auch von den Anforderungen ab.
Ich persönlich nutze meine Druckerklasse, da ich damit hochkomplizierte Ausdrucke in Verbindung
mit direktem Datenzugriff realisieren kann UND weil ich keine Lust habe List&Label zu lernen ;-)
Außerdem kann im Programm nichts mehr schief gehen und gerade bei Citrix-/Terminalserver-
Programmen ist es einfacher eine EXE zu haben, die alles erledigt.

Allerdings ist List&Label (laut Toms Beschreibung) heute so mächtig (Druckausgabe direkt als PDF,
Grafikdatei oder HTML, alle Barcodes etc.) dass es für normale Arbeiten (erst Daten suchen, dann
drucken lassen ...) sicher leistungsfähiger ist. Ob ich damit schneller wäre ... aber lernen muss man
alles.

Die RTF Version von Rolf ist sehr flexibel und der Anwender kann Text ändern.
Das wäre bei meinen Ausdrucken im Büro gar nicht gewünscht ...
Bei der Menge von Umsetzungen solltest du aber wahrlich vorher gut überlegen und auch probieren
(Testversionen) was für dich besser ist.

Ich bin gerade dabei alle Listen eines meiner ältesten Programme auf meine Druckerklasse umzustellen,
wobei ich leider nicht immer aktuelle Vorlagen habe und meinen alten "Clipper" Code direkt lesen muss ...
Ich brauche etwa 2 Stunden pro Liste, hauptsächlich weil mit dem Druck einige (jeweils verschiedene)
Aktionen mitlaufen müssen, die auch angepasst werden müssen.
Ich habe mir in dem Zusammenhang schon überlegt, die Druckerklasse um:

:say(nZei,nCol,xData,nCPI,nLPI)

zu erweitern, da ich eine alte Textverarbeitung integriert hatte, die die Randwerte in nZeichen
definiert und ich keine Lust habe das jeweils im Editor umzurechnen ;-)

Ich könnte natürlich das Ganze auch auslagern, aber die Anwender wollen die alte behalten ;-)
Gruß
Hubert
Josef Pittl
Rookie
Rookie
Beiträge: 9
Registriert: Sa, 29. Aug 2009 13:39

Re: Betriebssystemfehler Operation set aber nur unter Vista.

Beitrag von Josef Pittl »

Ich habe mir in dem Zusammenhang schon überlegt, die Druckerklasse um:
:say(nZei,nCol,xData,nCPI,nLPI) zu erweitern.


Das würde die Sache natürlich etwas leichter machen.

Ich denke ich werde folgendermaßen Vorgehen:
1. Der Alte PC mit Windows 2000 muss vorläufig mal stehen bleiben.
2. Ich werde Versuchen dem Windof Vista den Befehl Set Printer on usw. beizubringen. Irgend ein Kompatibilitätsmodus wird wohl Funktionieren.

3. Sollte Punkt 2 nicht Funktionieren werd ich mich wohl mit XBase++ wieder etwas auseinander setzen müssen. Meine XBase++ version ist aus dem Jahr 1999. Meine letzte Programmänderung am Hausverwaltungsprogramm aus dem Jahr 2002. Ich weis nicht mehr genau wie das Kompilieren funktioniert.

4. Einige Tests Durchführen mit verschiedenen Tools allenfals wenn notwendig auf ein neueres XBase++ Updaten usw.

Meine Freude hält sich in Grenzen. Aber vorerst mal vielen Dank für eure Hilfe.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: Betriebssystemfehler Operation set aber nur unter Vista.

Beitrag von AUGE_OHR »

Josef Pittl hat geschrieben:Das Programm läst sich auch ganz normal Starten bringt mir aber einen Betriebssystem Fehler bei der Operation: set
Der genaue Befehl lautet Set Printer On.
bitte poste doch mal den ganzen Anfang, den das kann NICHT sein.
Ich habe kein VISTA sondern Win7 und meine Hybrid Druck Routinen funktionieren noch genau so wie vorher.

Nachtrag: klar das man überhaupt vorher den Drucker dazu bewegen musste aus DOS/CMD
zu drucken. Der NEC P60 wurde von Win7 (lates RC 6.1.7100) erkannt. Dann den Spooler
abschalten (direkt zum Drucker) und LPT1: zuordnen.
im BIOS überprüfen auf was LPT1: steht (3F8 ?) und auf "normal", also kein EPP usw.

wenn dann : COPY myTEXT.TXT LPT1: funktioniert (warten ... ca. 90sec) und mit

Code: Alles auswählen

echo  >prn
... mist das (Steuer-)Zeichen geht hier nicht ...

... dann geht auch Cli*pper und genauso Xbase++ Hybrid.
Zuletzt geändert von AUGE_OHR am Di, 01. Sep 2009 22:21, insgesamt 1-mal geändert.
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Betriebssystemfehler Operation set aber nur unter Vista.

Beitrag von brandelh »

Hi,

wenn der Drucker wirklich an LPT1 angeschlossen ist, muss man den für DOS Programme freischalten.
Oder man gibt ihn als Netzwerkdrucker frei und ordnet ihn sich selbst unter z.B. lpt2 wieder zu.
Dann

SET PRINTER TO LPT1 vor allen anderen Befehlen setzen und
SET PRINTER TO am Ende ...

eventuell helfen auch solche Programme ?

http://dos-print-vista.qarchive.org/
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: Betriebssystemfehler Operation set aber nur unter Vista.

Beitrag von AUGE_OHR »

eine (wahre) Win7 Geschichte :

es war einmal ein Kyocera FS-1010 Drucker der treu seine Jahre an LPT1: verbracht hat. An seinem USB Anschluss
war auch des öfteren ein Notebook angeschlossen und "freigegeben" stand er jedem Netzwerk Anwender
stets zu Diensten.

Nun ergab sich eines Tages das der "böse" Administrator auf die Idee kam "ihn" an einem Win7 PC anzuschliessen,
wobei Win7 RC 6.1.7100 ihn noch nicht mal "erkannte". Das erzürnte den Administrator so sehr das er sich ins Internet begab
und seinen Zauberspruch "oh google, goole auf dem Bildschirm, sage mir wo finde ich einen Treiber" in die Suchmaschine eingab.

Das Orakel brauchte nicht lange um mit einer gewaltigen Liste von Treffern zum Administrator zurück zu kehren
und sagte ihm "da hast du die Liste, viel Spass"
Der Administrator ging zufrieden mit der Liste zurück zum Drucker und murmelte so vor sich hin : Treiber, Treiber ...

Schon bald schien sich der Erfolg einzustellen, den er fand die Adresse der Herstellers ... aber hat der auch einen Win7 Treiber ?
Das Modell wurde "erkannt" ... aber kein Win7 Treiber wie zu befürchten war ... was nun ? :angry4:

Aus lauter Verzweiflung entschied sich der Administrator "alles down-zu-loaden" was ihm zu dem Modell angeboten wurde. :banghead:

Nun gingen die Qualen des Kyocera FS-1010 erst richtig los, den der Administrator traktierte ihn mit allen Treibern,
auch wenn die gar nicht für das OS() gedacht waren ... :director:

als nun der Drucker tatsächlich auf die Auswahl "Kyocera FS-1010" reagierte machte der Administrator Luftsprünge ... :blob8:
zu früh gefreut wie sich später heraus stellte, den der Drucker fing Seite um Seite an Hieroglyphen auszuspucken. angry9:

Dem Administrator blieb nichts anderes übrig als dem Drucker den Strom abzustellen um damit den Spooler zu leeren.
Natürlich blieb bei dieser Prozedur nicht aus das dann ein Papierstau erfolgte sodass man den Drucker "zerlegen" musste. :violent1:

Nachdem der Administrator nun erfolglos alle Treiber ausprobiert hatte wollte er schon aufgeben... da viel ihm der USB Anschluss ein. :idea:

Man könnte ja noch einen allerletzten Versuch starten mit USB ... also alles wieder "de-installiert" und reboot.
Das Parallele Port Kabel wurde vorher entfernt sodass die USB Buchse frei lag. Der Administrator nahm nun sein USB Kabel
und verband den Drucker damit. Der "Kyocera FS-1010" heulte kurz auf (Lüfter) und Win7 begann zu arbeiten mit der Hardware Erkennung.

Schon nach kurzer Zeit tauchte ein "neues" Gerät auf, aber es hiess auch wie vorher nur das die Verbindung nun auf USB stand.
Wagemutig clickte der Administrator wieder auf den Button "Testseite drucken" in der Erwartung das ihm die Druckseiten
um die Ohren fliegen würden ... aber was ist das ? ein kurzes aufheulen (Lüfter) und schon kommt die Testseite raus ?! :thumbright:
und zwar 1 Seite ! so wie es ja sein sollte =D> ... naja fast.

hm ... dachte sich der Administrator "es geht also doch" aber ein wenig fehlt da noch, den er soll ja wieder auf LPT1: laufen.

soll man es "riskieren" eine funktionsfähige Lösung nochmal zu verändern ?
grüble ... was soll´s "alles oder nichts" also machen wir dem Schicksal ein Angebot.

also USB abgemeldet(!) und dann den Port von USB auf LPT1: geändert und reboot. Nach dem reboot tut sich noch nichts.
Jetzt an LPT1: das Kabel wieder angeschlossen ; Win7 reagiert augenblicklich und fängt mit der Hardware Erkennung an,
um kurze Zeit später ein Duplikat vom "Kyocera FS-1010" anzuzeigen ? Das Duplikat ist noch nicht "zugeordnet" ... hm

Also denkt sich der Administrator lass uns doch mal sehen welcher Port beim aktiven Drucker angezeigt wird.
Er steht auf LPT1: so wie er sollte, also wagen wir es doch und clickte "Testseite drucken".

Endlich konnte der Administrator sein Werk vollenden, den der "Kyocera FS-1010" druckte nun brav an LPT1:
Obwohl der Administrator nun den "Kyocera FS-1010" unter Win7 mit Druckaufträgen überhäufte
druckte der "Kyocera FS-1010" brav jeden Druckauftrag bis er vermelden könnte "Papier leer"
:wav:

Epilog : nach dem reboot ist nun auch das Duplikat "verschwunden" und er steht immer noch auf LPT1:
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Betriebssystemfehler Operation set aber nur unter Vista.

Beitrag von brandelh »

Kleiner Tipp an den Admin, statt den Laser auszuschalten, einfach das Papierfach entfernen ... wenn er dann Papier aus meldet, dann abschalten ;-)
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Betriebssystemfehler Operation set aber nur unter Vista.

Beitrag von Manfred »

Hi,

das simpelste dürften sein, auf den Online Knopf zu drücken, dann geht der Drucker in den Offline Modus und man kann dann beruhigt weiter agieren.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Josef Pittl
Rookie
Rookie
Beiträge: 9
Registriert: Sa, 29. Aug 2009 13:39

Re: Betriebssystemfehler Operation set aber nur unter Vista.

Beitrag von Josef Pittl »

Nun ich bin in der zwischenzeit selber etwas weiter gekommen. :color:
Ist halt schon blöd wenn man versucht mit "Net Use LPT1: \\PC1\Netzdrucker /persistent:Yes" die LPT1 auf den Netzwekdrucker umzuleiten wenn man gar keine LPT1 schnittstelle hat!

Der einfachste Weg wäre nun dem PC eine LPT1 Vorzugaukeln und diese auf den Netzwerkdrucker umzuleiten? Geht das?
Sonst müste ich die neuen PC's eben mit Paralellen Ports nachrüsten.
Ich würde am Programm nur ganz ungerne was ändern.
Josef Pittl
Rookie
Rookie
Beiträge: 9
Registriert: Sa, 29. Aug 2009 13:39

Re: Betriebssystemfehler Operation set aber nur unter Vista.

Beitrag von Josef Pittl »

Ich habe da schon etwas gefunden.
http://www.printfil.com/german.htm
Ich bin gerade beim Testen. Der erste Druck hat mal Funktioniert aber mit den weiteren Drucken gibts Probleme.
Werde weiter berichten. Aber erst Nächste Woche, jetzt geh ich auf ein Wochenendbier oder auch Zwei. :blob8:
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Betriebssystemfehler Operation set aber nur unter Vista.

Beitrag von brandelh »

Josef Pittl hat geschrieben:Ist halt schon blöd wenn man versucht mit "Net Use LPT1: \\PC1\Netzdrucker /persistent:Yes" die LPT1 auf den Netzwekdrucker umzuleiten wenn man gar keine LPT1 schnittstelle hat!
nein, das ist normal ! Wir haben früher LPT2 oder LPT3 verwendet,
damit die lokalen LPTs nicht blockiert wurden.
Gruß
Hubert
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Betriebssystemfehler Operation set aber nur unter Vista.

Beitrag von Rudolf »

Hallo,
für meine alten Programme verwendet ich DOSPRINT, es wird ein LPT simuliert, geht mit jedem Drucker. Man muss nur die Schrift ein wenig anpassen.
Grüsse
Rudolf
Josef Pittl
Rookie
Rookie
Beiträge: 9
Registriert: Sa, 29. Aug 2009 13:39

Re: Betriebssystemfehler Operation set aber nur unter Vista.

Beitrag von Josef Pittl »

Jetzt verstehe ich überhaupt nur mehr Bahhof!!!
Ich habe jetzt eine Paralelle schnitstelle im PC eingebaut.
Der Befehl NET USE LPT1: \\PC-1\hvdrucker /persistent:yes funktioniert und ein Ausdruck über die Konsole mit ECHO Testausdruck von LPT1 zum Netzdrucker>LPT1 geht auch.
Den Betriebsystemfehler meldet er immer noch???
Die XPPERRORLOG

Code: Alles auswählen

------------------------------------------------------------------------------
FEHLERPROTOKOLL von "hv.exe" Datum: 08.09.2009 09:56:47

Xbase++ Version     : Xbase++ (R) Version 1.20.178
Betriebssystem      : Windows NT  6. 0 Build 06001 Service Pack 1
------------------------------------------------------------------------------
oError:args         :
          -> VALTYPE: N VALUE:         24
          -> VALTYPE: C VALUE: LPT1
oError:canDefault   : .F.
oError:canRetry     : .F.
oError:canSubstitute: .T.
oError:cargo        : NIL
oError:description  : Betriebsystemfehler
oError:filename     : 
oError:genCode      :         40
oError:operation    : set
oError:osCode       :          2
oError:severity     :          2
oError:subCode      :          4
oError:subSystem    : BASE
oError:thread       :          1
oError:tries        :          0
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Aufgerufen von OUTWO(652)
Aufgerufen von TOPPRINT(3266)
Aufgerufen von HVSTAMM(94)
Aufgerufen von AUSWAHL(458)
Aufgerufen von MAIN(406)
Das Programm DOSPRINT funktioniert auch nicht? Mein Programm friert ein es kommt nicht mal eine Fehlermeldung und das Programm Printsil.com meldet nach ca. 10 min dass es auf die Textdatei filename.txt nicht zugreifen kann oder diese beschädigt sei. Die Hilfe zu diesem Programm sagt mir dann, dass ich den Timer höher einstellen soll aber auch das bringt nichts?

Ich bin am Verzweifeln?
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Betriebssystemfehler Operation set aber nur unter Vista.

Beitrag von brandelh »

Hi,

zeige uns doch mal den Quellcode den du beim Drucken verwendest, ausschnittsweise etwas so:

Code: Alles auswählen

set printer to lpt1
set printer on 
? "Test"
set printer off
set printer to 
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Betriebssystemfehler Operation set aber nur unter Vista.

Beitrag von brandelh »

Hi,

PS: in den letzten Tagen habe ich die letzten meiner Druckausgaben auf meine Druckerklasse umgestellt.
Die oHB:say(nZeile,nSpalte,cTxt) (linke obere Ecke ist 1,1 nicht 0,0 ;-) ) Erweiterung hat sich dabei bewährt.
Ich denke dass ich am Wochenende die neue Version freigebe.

Beispielcode:

Code: Alles auswählen

oHBP := HBPrinter():New():create() // Standarddrucker, sonst Vorgabetext in create
if ! oHBP:IsPrinterError()
   // am Anfang alle nötigen Schriften laden
   oHBP:addFont("12.Courier New") // 10 CPI
   oHBP:addFont("10.Courier New") // 12 CPI gewünscht ?
   oHBP:addFont("7.Courier New")  // 17 CPI gewünscht ?
   oHBP:addFont("12.Verdana")     // wenn man nicht mit Blanks formatiert geht auch das.
   // Erste Schrift hier einstellen, kann jederzeit geändert werden.
   oHBP:setFont(1)                     // so stellt man die gewünschte Schrift ein
   oHBP:StartDoc(cPrintJobName)
   
   for nRow := 5 to 66 // Zeilen 5 bis 66, oben und unten 4 als Rand
       oHBP:say(nRow,10,"Zeile "+str(nRow)+" beginnen auf 10.Stelle")
   next
   oHBP:setFont(3)                     // so stellt man die gewünschte Schrift ein   
   oHBP:say(3,40,"- "+alltrim(str(nSeite)+" -"   // Druckreihenfolge ist egal !
   oHBP:setFont(1)                     // so stellt man die gewünschte Schrift ein  
   // eine neue Seite muss man explizit befehlen !
   oHBP:newPage()   // wenn man sie braucht
   oHBP:say(15,40,cTxt)
   
   oHBP:EndDoc()
   oHBP:destroy()
endif
Ich hatte eine eigene Textverarbeitung, die bestimmte Texte einmischen und in anderer Schrift drucken musste.
Unter DOS / Xbase++ mit ? ... war das eine heiden Fummelei. Nun ist es ganz einfach, erst den normalen Text,
dann den Rest. Die Positionierung nutzt standardmäßig immer 10 CPI und 6 LPI, das kann man ändern,
ist aber nicht von der Schrift abhängig (man kann also verschiedene Schriften mischen ohne die Startwerte
umrechnen zu müssen.).
Gruß
Hubert
Josef Pittl
Rookie
Rookie
Beiträge: 9
Registriert: Sa, 29. Aug 2009 13:39

Re: Betriebssystemfehler Operation set aber nur unter Vista.

Beitrag von Josef Pittl »

Eine Komplette Funktion eines Ausdruckes:

Code: Alles auswählen

FUNCTION kto103()
    *               Druckersteuierung etc.............


    * Lesen der OF und FL Einstellung aus HVTEXTE
    PRIVATE zz,z1,ktoalt
    PRIVATE seite,strich,steuerb
    PRIVATE vafl,vaof,soll,haben,saldo
    zz:=0
    z1:="N"
    aktcol:=setcolor()
    steuerb:=0
    seite:=1
    strich:=replicate("-",70)
    vaof:=68
    vafl:=72
    soll:=0
    haben:=0
    saldo:=0
    *----------
    ueb1:="DATUM       BELNR       KTO         SOLL         HABEN   TEXT"
    ueb2:="DATUM       BELNR       KTO         SOLL         HABEN  V/U   STEUER   TEXT"
    *      12345678901234567890123456789012345678901234567890123456789012345678901234567890
    *               1         2         3         4         5         6         7         8
    *----------
    SET DELETE ON
    *
    vaof:=driver->drv_plengh

    *
    IF awout = 1     // Screen  gesamt ber File
        SET PRINTER ON
        SET PRINTER TO tmp.txt
        SET CONSOLE OFF
        setcolor("*n/w")
        @ 24,02 say "Daten werden fr Bildschirmausgabe vorbereitet"
        set device to print
        kto104a()
    END
    IF awout = 2         // Drucker
        SET PRINTER on
        SET CONSOLE OFF
        set device to print
        if yktst = "J"
            ? ps(smal_ein)
        endif
    END
    IF awout = 3      //  Ausgabe in File
        if(empty(file),file:=finame,)
            file:=rtrim(file)
            nPos:=at(".",file)
            if(nPos = 0,file:=file + ".txt",)
                SET PRINTER ON
                SET PRINTER TO ("&file")
                SET CONSOLE OFF
                setcolor("*n/w")
                @ 24,02 say "Daten werden in Datei " + alltrim(file) + " geschrieben"
                set device to print
            END
            if(ysv="N" .and. awout > 1,kto104a(),)

                SELECT kontstam
                GO TOP
                WHILE .not. kontstam->(eof())

                    SELECT journal
                    dbsetorder(2)
                    GO TOP

                    WHILE .not. journal->(eof())

                        if sollkto = kontstam->ktonr .or. habkto = kontstam->ktonr

                            IF kontstam->ktonr <> ktoalt
                                if(ysv="J",seite:=1,)
                                    z1:="J"                           // min. 1 Satz aus Journal
                                    kto104()   // šberschrift
                                    kto105()   // Datenzeile
                                ELSE
                                    kto105()
                                END
                            endif
                            SKIP ALIAS journal
                        END

                        IF z1 = "N"                 // nur Salden ausgeben
                            kto104()
                            soll:=kontstam->sollkum
                            haben:=kontstam->habkum
                        END

                        kto106()
                        if ysv = "J"
                            eject
                        endif
                        SKIP ALIAS kontstam
                    END
                    if ysv = "N"
                        eject
                    endif

                    IF awout = 1 .and. sout = 1
                        CLOSE hvwork
                    ENDif

                    if empty(callKonto)   // Call aus Jahresabrechnung
                        ? ps(smal_aus)
                        SET PRINT OFF
                        SET PRINTER TO
                        SET CONSOLE ON
                        set device to screen
                        set margin to
                        set color to &aktcol
                        if(awout=1 .and. sout=2,memodsp(),)
                        endif

                        return.t.
                        *
                        *-----------------------------------------------------------
Bei jedem Set Print on Egal ob die ausgabe auf den Bildschirm, Drucker oder in eine Datei umgeleitet wird?
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Betriebssystemfehler Operation set aber nur unter Vista.

Beitrag von brandelh »

Hi,

ich kann hier keine Zeile
set printer to LPT1
finden :?
Gruß
Hubert
Dieter
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 237
Registriert: Do, 14. Aug 2008 14:59
Wohnort: Straelen
Hat sich bedankt: 2 Mal
Danksagung erhalten: 3 Mal

Re: Betriebssystemfehler Operation set aber nur unter Vista.

Beitrag von Dieter »

Hallo Hubert,

du hast geschrieben:
PS: in den letzten Tagen habe ich die letzten meiner Druckausgaben auf meine Druckerklasse umgestellt.
Die oHB:say(nZeile,nSpalte,cTxt) (linke obere Ecke ist 1,1 nicht 0,0 ;-) ) Erweiterung hat sich dabei bewährt.
Ich denke dass ich am Wochenende die neue Version freigebe.
Deine HBPrinter-Klasse wird mit dieser Erweiterung gerade für Leute mit viel alten Clipper-Code immer interessanter. Bei meinem ersten Gui-Programm mit xbase++ habe ich bereits deine Klasse eingesetzt und war wirklich beeinduckt von der Leistungsfähigkeit deiner Entwicklung. =D> =D>
An die vielen Drucklisten in einem MDI-Hybridprogramm habe ich mich jedoch aus Zeitgründen noch nicht herangetraut. Mit deiner Erweiterung würde es aber kinderleicht zu bewerkstelligen sein.
Ich bin auf jeden Fall sehr gespannt.
Viele Grüße

Dieter

Was man nicht versteht, besitzt man nicht.
Antworten