PDA

View Full Version : PROBLEMINO CON CLIPPER....


heavymetalforever
13-08-2015, 12:18
Ciao a tutti,
vi posto il mio problema, spero mi potiate aiutare, sempre che si possa.
Al lavoro ho un programmino gestionale fatto con Clipper, che ovviamente non ne vuole sapere di stampare su porta LPT1.
Ora, sono riuscito a far girare il programma correttamente (macchina virtuale XP a 32 bit)... funziona tutto ad eccezione delle stampe.
Ho rimappato la porta LPT1 su una stampante di rete, con esito positivo, ma anche così il programma non stampa. Preciso che il redirect, fatto con net use lpt1 ecc ecc funziona correttamente, perchè se da cmd digito ad es. dir > lpt1 mi stampa correttamente sulla stampante di rete l'output della dir.
Ho fatto vari tentativi e mi sono accorto che effettivamente il programma non stampa semplicemente perchè... il programma stesso non manda a LPT1, ma verso i file (l'ho scoperto solo dopo, in quanto i colleghi mi dicevano "prima stampava sulla stampante" quindi avevo imputato tutto ad un discorso di compatibilità... e allora ho perso un pò di tempo in questo senso. Tra l'altro mi era già capitato in passato di far girare un altro programma fatto sempre in CLIPPER, e avevo risolto rimappando la LPT1 con net use e tutto funzionava.
Torniamo quindi al problema: quando lancio le stampe, dopo svariati tentativi, mi accorgo che il file di testo contenente l'output della stampa lanciata magicamente cambia la data dell'ultima modifica... e prende quella del momento in cui ho lanciato la stampa.
Girando per alcuni forum ho visto che da Clipper la stampa DA PROGRAMMA può essere sostanzialmente diretta verso la LPT oppure verso il file.
Domandona: visto che ovviamente il programmatore che aveva fatto il programma non c'è più (altrimenti era troppo facile, chiedevo una modifica o il sorgente), è possibile secondo voi fare un redirect in modo che l'output del programma, che va su file, venga di nuovo reindirizzato su LPT?
Mi spiego meglio (almeno cerco):

- immagino che clipper invii le stampe su una porta (un file, certo, ma comunque una porta, o un dispositivo, dall'interno del programma). Secondo voi, dall'esterno del programma, prima di lanciarlo, magari con qualche variabile di ambiente /qualche SET e/o Echo sarebbe possibile rimappare verso la LPT l'output del dispositivo che usa Clipper dall'interno del programma che cattura le stampe?

In questo modo otterrei in modo un pò contorto quello che in realtà il programma dovrebbe fare da subito, ovvero fornire l'output su carta.

Secondo voi si può fare?

Grazie per l'aiuto... buona giornata a tutti
Giuseppe

Daniels118
13-08-2015, 15:03
Per curiosità, come si chiama il file dove viene attualmente "stampato" il contenuto?

heavymetalforever
17-08-2015, 12:20
è un file di testo, fattpag.txt mi sembra...
infatti corrisponde alla voce di menu del programma STAMPA > FATTURE da pagare.
Intendi fare un redirect del file verso la LPT?
In caso lo dovrei fare per tutti i file... non che sia un problema, basta che funzioni!

Daniels118
17-08-2015, 12:59
Un link non funzionerebbe, hanno estensione ".lnk" anche se esplora risorse non la mostra mai (basta fare una dir dal prompt dei comandi per vederlo).
Quello che non capisco è come faceva prima a stampare, ma in sostanza le possibilità sono 2:
1) c'è qualche configurazione da fare che permette di cambiare la destinazione dell'output;
2) il programma scrive prima su file e poi scrive il file sulla stampante, ed anche qui bisognerebbe capire cos'è che non funziona.

Immagino che questo programma sia stato scritto ad-hoc, quindi non c'è speranza di trovare documentazione online, ma se mi sbaglio ti prego di smentirmi (e dirmi come si chiama il programma).

Come ultima spiaggia si potrebbe realizzare uno spooler che ad intervalli regolari verifica se il file esiste, lo manda sulla lpt e poi lo cancella.

heavymetalforever
18-08-2015, 12:11
Ciao, grazie per l'interessamento anzitutto :)

Comincio col dirti che il programma è fatto ad hoc e non è commerciale... l'ha fatto un vecchio programmatore che prima lavorava qui da me... e ora è andato via... di conseguenza non si può sentire.

"Prima stampava" lo dicono i colleghi, io gli credo, ma si parla di anni e anni or sono (ai tempi di Windows 95/98). E' possibile che a quell'epoca il programma fosse adattato a livello codice per stampare sulla LPT1 anzichè sui file come fa ora... le stampanti erano parallele e soprattutto gli OS lo facevano girare (le stampe su file / LPT le gestisci direttamente dal codice).

Dopo di che con l'avvento dei vari Windows XP / 7 / ecc potrebbe aver cambiato il codice per fare una stampa su file, che "sicuramente funziona" anzichè LPT che man mano scarseggiavano e/o non venivano gestite correttamente dagli OS.

Ovviamente questa è una mia teoria, che non potrà mai essere confermata, ma rimane il fatto che il comportamento del programma ora come ora è quello... aggiorna il file quando usi i menu, quindi in qualche modo ci scrive.

Guarda quello che ho trovato sulla documentazione di clipper: come vedi ti mostro i 2 esempi, il primo per settare e stampare sulla LPT, l'altro su file:

This example directs printer output to LPT1 and empties the
print spooler upon completion:

SET PRINTER TO LPT1
<Printing statements>...
SET PRINTER TO // Empty the print spooler

e ora su file:

. This example sends printer output to a text file, overwriting
an existing file with the same name:

SET PRINTER TO Prnfile.txt
SET DEVICE TO PRINTER
SET PRINTER ON
//
@ 0, 0 SAY "This goes to Prnfile.txt"
? "So will this!"
//
SET DEVICE TO SCREEN
SET PRINTER OFF
SET PRINTER TO // Close the print file

Come vedi lo fai a livello codice, non da esterno al programma.

Quello che chiedo io è semplicemente se è possibile "catturare" l'output del file di testo e a sua volta ridirezionarlo sulla LPT, con qualche stratagemma... ma la vedo veramente dura farlo "al volo" direttamente quando si usano i menu del programma.

Grazie ciao

Daniels118
18-08-2015, 18:13
La vedo difficile...

newuser
18-08-2015, 18:18
Io uso questo:

http://www.lerup.com/printfile/

E' una utiilty che controlla costantemente il contenuto di una directory e stampa i file con un dato nome o estensione.
Per agire come spooler occorre passare nella linea di comando la configurazione della stampante e la directory con la maschera file da controllare.

Io l'ho trovato semplice da configurare, tieni presente che se il tuo programmatore ha usato i codici di controllo per formattare le stampe dovrai usare una stampante compatibile con quella da lui scelta.

heavymetalforever
19-08-2015, 11:11
Io uso questo:

http://www.lerup.com/printfile/

E' una utiilty che controlla costantemente il contenuto di una directory e stampa i file con un dato nome o estensione.
Per agire come spooler occorre passare nella linea di comando la configurazione della stampante e la directory con la maschera file da controllare.

Io l'ho trovato semplice da configurare, tieni presente che se il tuo programmatore ha usato i codici di controllo per formattare le stampe dovrai usare una stampante compatibile con quella da lui scelta.

Grazie, provo subito!!!!
Ma che tu sappia funziona anche in modalità "on demand" al volo?
Io l'ho installato, da quello che vedo apro un file e lui me lo manda sulla stampante... ma come faccio a farlo restare "in ascolto" su una cartella e quando viene rilevata una modifica ad un file .txt automaticamente stamparne il contenuto?
A me interesserebbe un comportamento del genere, posto che sia possibile farlo...
Da command line se io lo avvio col parametro /s: e come wildcard gli metto il percorso della cartella contenente tutti i file, lui mi manda in stampa tutti i file .txt contenuti...
Io vorrei invece che all'occorrenza della modifica di uno dei file (comportamento che avrei agendo dai menu a programma) lui lo mandi in stampa (solo il file modificato).
E' fattibile secondo te?
Grazie ciao

heavymetalforever
19-08-2015, 13:55
Ho trovato un modo, semplice ed efficace.

- Il mio collega fa tutte le stampe col programma, come se niente fosse;
- Quando ha finito va nella cartella contenente tutti i file;
- Dall'ora di ultima modifica capisce quali sono quelli che ha modificato poco fa
- Li stampa dal blocco note senza problemi.

Non c'è modo di fare altrimenti, almeno così funziona ed è semplice la procedura.

Ciao ciao