SET PRINTER TO

Still in use?

Moderator: Moderatoren

Antworten
angelo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 196
Registriert: Mo, 24. Apr 2006 10:52

SET PRINTER TO

Beitrag von angelo »

Hallo zusammen,

ich speichere eine Datei mit SET PRINTO TO Dateiname.txt in einem Verzeichnis.
Nun möchte ich aber die gleiche Datei einmal in dieses Verzeichnis und zugleich in ein anderes speichern.
Wie mache ich das? Habe schon einiges probiert klappt aber nicht ganz.

Im voraus vielen Dank für die Hilfe.

Viele Grüße
angelo
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: SET PRINTER TO

Beitrag von brandelh »

Hi,

wenn du diese Form nutzt ...

Code: Alles auswählen

set printer to myText.txt
? "Hier kommt der Inhalt"
set printer to 
nutzt und alle gewünschten controlzeichen in die Strings packst,
könnte es so funktionieren:

Code: Alles auswählen

set printer to myText.txt
set printer on
set alternate to c:\pfad\myZeiteDatei.txt
set alternate on
? "Hier kommt der Inhalt"
set printer to 
set alternate to 
mit xbase++ hätte man es auch einfach kopieren können:

copy file myText.txt to c:\pfad\myZeiteDatei.txt

aber ich glaube nicht dass das clipper konnte.
Eventuell mit run ... oder fopen() etc.
Gruß
Hubert
angelo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 196
Registriert: Mo, 24. Apr 2006 10:52

Re: SET PRINTER TO

Beitrag von angelo »

brandelh hat geschrieben:Hi,

wenn du diese Form nutzt ...

Code: Alles auswählen

set printer to myText.txt
? "Hier kommt der Inhalt"
set printer to 
nutzt und alle gewünschten controlzeichen in die Strings packst,
könnte es so funktionieren:

Code: Alles auswählen

set printer to myText.txt
set printer on
set alternate to c:\pfad\myZeiteDatei.txt
set alternate on
? "Hier kommt der Inhalt"
set printer to 
set alternate to 
mit xbase++ hätte man es auch einfach kopieren können:

copy file myText.txt to c:\pfad\myZeiteDatei.txt

aber ich glaube nicht dass das clipper konnte.
Eventuell mit run ... oder fopen() etc.

Hallo Hubert,

das mit copy file..... habe ich schon am Anfang probiert denn es wäre einfach gewesen
aber leider, wie Du geschriebent hast, funktioniert es leider nicht.
Mit den anderen Möglichkeiten bin ich auch auf keinen grünen Zweig gekommen.

Es wird im Prg. eine Vorschau des Beleg's vor dem Ausdruck angezeigt aber vorher wird die
Datei auf C:\ als Datei gespeichert. Genau diese sollte nochmals gespeichert werden in einem anderen
Verzeichnis.

Viele Grüße
angelo
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: SET PRINTER TO

Beitrag von brandelh »

Hi,

zeig doch mal wie du druckst und woher kommt die Vorschau ?

sag mir doch bitte ob der COPY FILE Befehl in clipper vorhanden ist, ich kann mich nicht mehr erinnern.
Wenn ja, dann könnte es daran scheitern, dass die Datei noch offen ist (set printer to schließt diese !)
Gruß
Hubert
angelo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 196
Registriert: Mo, 24. Apr 2006 10:52

Re: SET PRINTER TO

Beitrag von angelo »

brandelh hat geschrieben:Hi,

zeig doch mal wie du druckst und woher kommt die Vorschau ?

sag mir doch bitte ob der COPY FILE Befehl in clipper vorhanden ist, ich kann mich nicht mehr erinnern.
Wenn ja, dann könnte es daran scheitern, dass die Datei noch offen ist (set printer to schließt diese !)

Hallo Hubert,

nachdem ich alle Belegdaten eingegeben habe wird eine Text-Datei mit SET PRINTER TO BELEG.TXT gespeichert.
Mit MEMOREAD wird dann der Beleg am Bildschirm angezeigt, so wie er nach dem Ausdruck ausschauen wird.
Das soll helfen die Daten nochmals zu kontrollieren bevor man es ausdruckt.

In Clipper gibt es den Befehl COPY FILE BELEG.TXT TO BELEG.TXT.
Wenn ich diesen benütze wird die Datei kopiert aber ohne die Daten also 0 Byte groß.
Mit SET PRINTER TO habe ich auch versucht diese nach dem erstellen der Text-Datei zu schließen
aber es gab trotzdem eine 0 Byte Datei.

Weißt Du an was es liegt?

Im voraus Vielen Dank für die Hilfe.

Viele Grüße
angelo
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16516
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: SET PRINTER TO

Beitrag von Martin Altmann »

Hallo Angelo,
Du solltest das COPY TO nach dem SET PRINTER TO (also dem Schließen der Datei) und vor dem Memoread() machen!
Dann sollte das auch gehen...

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.
angelo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 196
Registriert: Mo, 24. Apr 2006 10:52

Re: SET PRINTER TO

Beitrag von angelo »

Martin Altmann hat geschrieben:Hallo Angelo,
Du solltest das COPY TO nach dem SET PRINTER TO (also dem Schließen der Datei) und vor dem Memoread() machen!
Dann sollte das auch gehen...

Viele Grüße,
Martin

Hallo Martin,

Danke für den Tipp.
Probiere ich gleich morgen.

Viele Grüße
angelo
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: SET PRINTER TO

Beitrag von AUGE_OHR »

angelo hat geschrieben: Mit MEMOREAD wird dann der Beleg am Bildschirm angezeigt, so wie er nach dem Ausdruck ausschauen wird.
Das soll helfen die Daten nochmals zu kontrollieren bevor man es ausdruckt.
und warum benutzt du dann nicht MemoWrit() ?

Code: Alles auswählen

NewMemo := MemoEdit( MemoRead( cFileInput ) )

MemoWrit( cFileOut1, NewMemo ) 
MemoWrit( cFileOut2, NewMemo ) 
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: SET PRINTER TO

Beitrag von brandelh »

angelo hat geschrieben: In Clipper gibt es den Befehl COPY FILE BELEG.TXT TO BELEG.TXT.
So wie ich das sehe sind QUELL- und ZIEL-Datei identisch ... das kann nur schief gehen !
Gruß
Hubert
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16516
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: SET PRINTER TO

Beitrag von Martin Altmann »

Hallo Hubert,
ich gehe mal davon aus, dass dies nur ein Beispielcodeschnipsel war - sonst hätte Angelo nicht geschrieben, dass die Datei zwar kopiert wird, aber die Kopie 0 Byte groß ist :wink:

Hallo Jimmy,
gibt es MemoWrite() denn unter Clipper :?:

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
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: SET PRINTER TO

Beitrag von brandelh »

Martin Altmann hat geschrieben:Hallo Hubert,
ich gehe mal davon aus, dass dies nur ein Beispielcodeschnipsel war - sonst hätte Angelo nicht geschrieben, dass die Datei zwar kopiert wird, aber die Kopie 0 Byte groß ist :wink:
Aber Martin, man soll nichts voreilig unterstellen ;-)
Das Verhalten passt übrigens !
Wenn der Befehl intern die Datei z.B. mit FOPEN() binär zum lesen öffent und wartet, ob die Zieldatei auch geöffnet werden kann, bleibt er am Dateianfang. Nun wird die zweite Datei geöffnet, diese setzt aber erstmal die Bytelänge der Datei auf 0 also von Anfang an überschreiben, nun liest man aus der ersten und siehe da die ist ja leer, da es jeweils die gleiche Datei war :shock:

Das war jetzt einiges (shareverhalten, openmodi ...) von mir unterstellt ... :D

Mal sehen ob es hier nur ein Tippfehler war :wink:

Martin Altmann hat geschrieben:Hallo Jimmy,
gibt es MemoWrite() denn unter Clipper :?:
Aber Hallo, natürlich :!:

PS: ab und zu geht mir das auch so, Xbase++ kann halt viel mehr, aber den memowrit() habe ich schon unter clipper gerne genutzt. Wegen des alten (DOS) Clipper-Befehls, hängt ja auch das aktuelle memowrit() das heute störende chr(26) an (Dateiende Zeichen).
Gruß
Hubert
angelo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 196
Registriert: Mo, 24. Apr 2006 10:52

Re: SET PRINTER TO

Beitrag von angelo »

brandelh hat geschrieben:
Martin Altmann hat geschrieben:Hallo Hubert,
ich gehe mal davon aus, dass dies nur ein Beispielcodeschnipsel war - sonst hätte Angelo nicht geschrieben, dass die Datei zwar kopiert wird, aber die Kopie 0 Byte groß ist :wink:
Aber Martin, man soll nichts voreilig unterstellen ;-)
Das Verhalten passt übrigens !
Wenn der Befehl intern die Datei z.B. mit FOPEN() binär zum lesen öffent und wartet, ob die Zieldatei auch geöffnet werden kann, bleibt er am Dateianfang. Nun wird die zweite Datei geöffnet, diese setzt aber erstmal die Bytelänge der Datei auf 0 also von Anfang an überschreiben, nun liest man aus der ersten und siehe da die ist ja leer, da es jeweils die gleiche Datei war :shock:

Das war jetzt einiges (shareverhalten, openmodi ...) von mir unterstellt ... :D

Mal sehen ob es hier nur ein Tippfehler war :wink:

Martin Altmann hat geschrieben:Hallo Jimmy,
gibt es MemoWrite() denn unter Clipper :?:
Aber Hallo, natürlich :!:

PS: ab und zu geht mir das auch so, Xbase++ kann halt viel mehr, aber den memowrit() habe ich schon unter clipper gerne genutzt. Wegen des alten (DOS) Clipper-Befehls, hängt ja auch das aktuelle memowrit() das heute störende chr(26) an (Dateiende Zeichen).


Hallo Hubert,

natürlich war das nur ein Beispielcodeschnipsel. Die Quell- und Zieldatei sind nicht identisch.

Viele Grüße
angelo
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: SET PRINTER TO

Beitrag von UliTs »

Hallo Angelo,

ich habe mal in altem Code gestöbert und die folgende Routine gefunden:

Code: Alles auswählen

procedure Kopiere
parameters PDBFName,PDBFKopieName
private HFileNr,HKopieFileNr,HStr,HNr,HCol,HAnz
   HCol         = col()
   HFileNr      = FOpen( PDBFName,194 )   && Lesen im Share'd-Zugriff
   if HFileNr <> -1
      HNr          = 0
      HStr         = space( 16384 )
      HKopieFileNr = FCreate( PDBFKopieName )
      if HKopieFileNr <> -1
         do while .T.
            HAnz = FRead( HFileNr,@HStr,16384 )
            if HAnz = 0
               exit
            endif
           FWrite( HKopieFileNr,HStr,HAnz )
           @ Row(),HCol say str( HNr*16384+HAnz,8 )
           HNr = HNr+1
         enddo
         FClose( HKopieFileNr )
         ?? " Erfolgr."
      else
        ?? " nicht möglich: Problem mit der Kopie!"
      endif
      FClose( HFileNr      )
   else
      FClose( HFileNr )
      ?? " nicht möglich!"
   endif
return
Vielleicht hilft Dir das weiter.

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Antworten