[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/privacyprotection/cron/task/anonymize_ip.php on line 83: A non-numeric value encountered
Inoffizielles deutsches Xbase-Forum • Clipper Druckereinstellungen
Seite 1 von 1

Clipper Druckereinstellungen

Verfasst: Mi, 26. Mai 2021 15:29
von Zorus
Guten Tag,

Ich habe bei uns im Labor noch einen Computer stehen, auf dem eine Software basierend auf Clipper läuft. Ein Teil des Programms ist für den Druck von Etiketten für die Laborproben zuständig. Da sich bei den Etiketten das Format ändern wird, soll ich mir die Software anschauen und die passenden Änderungen vornehmen. Ich bin selber kein Programmierer und der Erschaffer unserer Software ist auch schon lange weg. Ich habe den fraglichen Teil im Code gefunden, blicke aber nicht zu 100% durch, welche Variable für was steht und was macht etc. Vielleicht kann mir ja hier jemand weiterhelfen, das wäre wunderbar!
Aktuell werden die Etiketten in drei Spalten gedruckt, jede Nummer wird immer doppelt vergeben.
Beispiel:

ITMC ITMC ITMC
10000 10000 10001

ITMC ITMC ITMC
10001 10002 10002
etc.

Ich wüsste gerne, an welchen Stellschrauben ich drehen muss, um den Abstand und die Anzahl der Spalten zu verändern, je nach Anforderung der neuen Etiketten.

Vielen Dank schonmal!

Hier ist der Ausschnitt aus dem Code:

procedure nummernet
private fensalt,fensneu
*set intensity off
set delimiters to "[]"
set delimiters on
fensalt=wselect()
fensneu=wopen(12,20,20,60,.T.)
wbox()
@ 0,8 say "Etikettendruck:"
@ 1,0 say replicate("-",38)
@ 3,1 say "Startnummer "
@ 3,22 say "Wieviel "
@ 5,5 say "<P>robeausdruck <A>usdruck"
do while .T.
num1=0
num3=0
@ 3,13 get num1 picture("#####")
@ 3,30 get num3 picture("####")
read
if empty(num1) .or. empty(num3)
exit
endif
set color to &atr4
@ 5,6 say "P"
@ 5,22 say "A"
set console off
if .not. printeran(1,72)
exit
endif
set margin to 0
do while .T.
num2=waitkey(0,1)
do case
case num2=112
do probedr
case num2=97
ausdruck(num1,num3)
exit
case num2=27
exit
otherwise
loop
endcase
enddo
if .not. printeran(3,72)
exit
endif
set console on
set color to &atr0
@ 5,6 say "P"
@ 5,22 say "A"
enddo
wclose(fensneu)
wselect(fensalt)
do kopf
return


procedure probedr
? chr(27)+"S1"+" "+chr(27)+"T"
?
? chr(27)+"w1"+str(num1,5,0)+chr(27)+"w0"
?
return

function ausdruck
parameters vonwo,wieviel
num4=0
?? chr(27)+"M"
do while .T.
for num5=1 to 2
? chr(27)+"S1"+" ITMC ITMC ITMC"+chr(27)+"T"
? chr(27)+"G"
? chr(27)+"w1"+str(vonwo+num4,5,0)
?? " "+str(vonwo+num4+1,5,0)
?? " "+str(vonwo+num4+2,5,0)+chr(27)+"w0"
? chr(27)+"H"
next
num4=num4+3
if num4>=wieviel
exit
endif
enddo
return(0)

Re: Clipper Druckereinstellungen

Verfasst: Do, 27. Mai 2021 5:14
von AUGE_OHR
hi,
Zorus hat geschrieben: Mi, 26. Mai 2021 15:29 Guten Tag,
willkomen im Forum
Zorus hat geschrieben: Mi, 26. Mai 2021 15:29 Ich wüsste gerne, an welchen Stellschrauben ich drehen muss, um den Abstand und die Anzahl der Spalten zu verändern, je nach Anforderung der neuen Etiketten.
Cl*pper arbeitet mit "festen" Abständen ( Proportional Schrift ) d.h. man fügt ein "Leerzeichen" dazu
Zorus hat geschrieben: Mi, 26. Mai 2021 15:29

Code: Alles auswählen

function ausdruck
parameters vonwo,wieviel
num4=0
?? chr(27)+"M"
do while .T.
    for num5=1 to 2
       ? chr(27)+"S1"+" ITMC         ITMC         ITMC"+chr(27)+"T"
       ? chr(27)+"G"
       ? chr(27)+"w1"+str(vonwo+num4,5,0)
       ?? "        "+str(vonwo+num4+1,5,0)
       ?? "        "+str(vonwo+num4+2,5,0)+chr(27)+"w0"
       ? chr(27)+"H"
     next
     num4=num4+3
     if num4>=wieviel
        exit
     endif
enddo
return(0)
das sind "Epson" bzw. ESC Sequenzen welche mit CHR(27) anfangen.
da sich diese bei den Drucker unterscheiden können ist die Frage "was" für ein Drucker du hast (genaue Bezeichnung )

wie schon gesagt solltest du "Leerzeichen" für die "Breite" einfügen.
die Anzahl der Spalten ist ( vermutlich ) in "wieviel" angegeben

---

es ist weniger das Problem mit dem Clipper Compiler sondern der (alte) Drucker welcher (noch) ESC-Sequenzen "versteht"
heutzutage würde man Barcode oder ähnliches drucken was Clipper (Grafik-Ausdruk) nicht kann.
Deshalb ist es schwer möglich ein Druck Ergebnis zu verifizieren wenn ich keinen Drucker habe der mir das Ergebnis zeigt

du könntest Xbase++ benutzen aber ob zu einen 4 Stelligen Betrag dafür investieren willst ...
alternative gäbe es harbour welches "free" ist womit man Barcode & Co drucken (auch PDF) kann
https://github.com/HMG-Official/HMG

als Forum würde ich HMG empfehlen
https://www.hmgforum.com
wobei Portugisich oder Spanisch gesprochen wird. (klar geht auch Englisch )

weitere Informationen gerne per privater Email ( bitte mit Photo von den Etiketten )

Re: Clipper Druckereinstellungen

Verfasst: Do, 27. Mai 2021 7:41
von Tom
Ergänzend zu Jimmys Ausführungen:

1. In dieser Zeile wird die Kopfzeile gedruckt:

Code: Alles auswählen

? chr(27)+"S1"+" ITMC         ITMC         ITMC"+chr(27)+"T"
Zwischen den Spaltenüberschriften "IMC" stehen jeweils neun Leerzeichen. Wenn man da einfach jeweils welche hinzufügt oder rausnimmt, erhöhen oder verringern sich die Abstände.

2. Hier werden nacheinander die drei Spalten gedruckt:

Code: Alles auswählen

? chr(27)+"w1"+str(vonwo+num4,5,0) // erste Spalte
?? "        "+str(vonwo+num4+1,5,0) // zweite Spalte
?? "        "+str(vonwo+num4+2,5,0)+chr(27)+"w0" // dritte Spalte
Auch hier werden - direkt nach dem Ausgabekommando "??" - neun Leerzeichen vor die zweite und dritte Spalte gesetzt. Siehe oben - man verlängert oder verkürzt schlicht den Leertext zwischen den Anführungszeichen und verändert dadurch die Abstände. Fertig.

Re: Clipper Druckereinstellungen

Verfasst: Do, 27. Mai 2021 12:52
von ramses
Die Epson Sequenzen bedeuten:

ESC M = 12cpi
ESC S1 = Druck das erste folgende Zeichen mit 2/3 der normalen Höhe
ESC W1 = Drucken in Doppelter Hohe EIN
ESC W0 = Drucken in Doppelter Hohe AUS
ESC G = Drucken mit doppeltem Anschlag EIN
ESC H = Drucken mit doppeltem Anschlag AUS

Die werden noch immer von vielen Druckern benutzt ......