Ripetizione stampa con Harbour

Moderator: Enrico Maria Giordano

Piscicelli Zingoni
Posts: 76
Joined: Wed Oct 12, 2005 5:52 pm
Location: Milan,Italy

Ripetizione stampa con Harbour

Post by Piscicelli Zingoni »

Salve, mi e' capitato che un cliente utilizzando un programma con fw (16) funziona bene (stampando una fattura)
Lo stesso programma compilato con harbour funziona tutto bene ad eccezione che nella stampa delle fatture (anteprima) ripresenta sempre la precedente fattura stampata....come se non cancellasse i wmf all'uscita della stampa!
Possibile ?
Mai capitato a qualcuno ?
Dato che il cliente e' molto distante non posso verificarlo di persona ma ci devo credere. Io pero' non riesco a simulare tale problema sul mio PC.

Avevo gia' postato questo problema ma non sono riuscito a risolverlo.

Si accetta qualunque consiglio.
Piscicelli/Zingoni
User avatar
Marco Turco
Posts: 858
Joined: Fri Oct 07, 2005 12:00 pm
Location: London
Contact:

Post by Marco Turco »

Questo problema si verifica generalmente a causa di possibili bug di programmazione (magari in talune circostanze non "chiudi" la pagina oppure apri più volte una nuova pagina o ancora non chiudi la stampa) oppure a causa di problemi di stampa (finisce la carta o si verifica un errore irreversibile di stampa). In questi casi il file wmf può rimanere aperto e quando crei una nuova stampa, poiché il nome del file wmf viene generato con una numerazione progressiva, se il file già esiste ed è aperto, non potrà essere sovrascritto dalla nuova stampa ed è per questo motivo che ti appare sempre la pagina stampata in precedenza.

Io ho risolto definitivamente questo problema modificando la classe nella quale viene generato il nome wmf (non ricordo se printer.prg o tmetafil.prg).

1) Faccio generare i file wmf in una cartella TMP che ho creato nella mia applicazione. Questo perché Antonio crea i file wmf nella cartella dei file temporanei di Windows che però in caso di accesso al sistema diverso da Administrator può creare alcuni problemi nella creazione dei file.

2) Quando creo una stampa cancello prima tutti i wmf della cartella TMP e comunque quando genero il nome, verifico prima che non sia già presente un file con lo stesso nome altrimenti passo alla numerazione successiva.

Saluti

Marco
Piscicelli Zingoni
Posts: 76
Joined: Wed Oct 12, 2005 5:52 pm
Location: Milan,Italy

Post by Piscicelli Zingoni »

Grande idea, ci provero' anche io.
Grazie Mille
Piscicelli Zingoni
Posts: 76
Joined: Wed Oct 12, 2005 5:52 pm
Location: Milan,Italy

Post by Piscicelli Zingoni »

Salve,
ho creato una funzione che cancella i uscita i WMF nella temp dir.
Ho notato che qualche volta non riesco a cancellare il file poiche' "utilizzato da un altro processo".
Ecco il motivo della ripetizione della stampa.

Qualche idea?
Grazie
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Post by Enrico Maria Giordano »

Significa che il file che cerchi di cancellare è ancora in uso. Identificalo e controlla, chiudendo o terminando i vari programmi in esecuzione, chi è che lo sta utilizzando.

EMG
Piscicelli Zingoni
Posts: 76
Joined: Wed Oct 12, 2005 5:52 pm
Location: Milan,Italy

Post by Piscicelli Zingoni »

Sono in monoutente e sto visualizzando la pagina 3 dell'anteprima e quella che non risco a cancellare e' la pagina 1 !!
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Post by Enrico Maria Giordano »

Piscicelli Zingoni wrote:Sono in monoutente e sto visualizzando la pagina 3 dell'anteprima e quella che non risco a cancellare e' la pagina 1 !!
Non puoi cancellare i files dell'anteprima che stai attualmente visualizzando.

EMG
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post by Silvio »

Non puoi dire direttamente a Linares di correggere questo problema ?
Certo che l'anteprima di stampa non funziona correttamente e privo di molte cose rispetto alle altre anteprime di stampa degli altri linguaggi
Per esempio a scuola abbiamo un programma del MIUR ( ministero) lui usa Powerbuilder e li c'è un'anteprima molto accattivante....
> Conversione in formati grafici e testo ( txt,pdf,doc)
> righello
>visualizzazione come in winword ( 10,25,50,75,100,200,400 per quanto riguarda lo zoom e poi in 2/4/6/8/10 x X pagine per la visualizzazione in un unica finestra di tutte le pagine del documento
> possibilità di inserire un image ..noi usiamo questo per inserire le firme scannerizzate in fondo al documento
> le stampe sono parametrizzabile dall'utente infatti è possibile creare un nuovo modello di stampa il programma elenca tutti i campi possbili e te li fa inserire nel documento ....

Certo quando arriveremo a questi livelli potremmo dire che il rpreview di stampa funziona correttamente .
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Post by Enrico Maria Giordano »

Silvio wrote:Non puoi dire direttamente a Linares di correggere questo problema ?
Che io sappia non è un problema che dipende dalle Fivewin (personalmente non l'ho mai visto). Un esempio che lo dimostri aiuterebbe a capirne la natura.

EMG
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post by Silvio »

si ok
ancora con sti esempi
io ti voglio far capire una cosa : la situazione mi è capitata tempo fa
una procedura non funzionava con i footers di wbrowse di hernan
ho fatto un programmino di test semplice questo funzionava
mi sono impazzito una settimana per trovare l'errore poi ho scoperto che avevano cambiato il nome delle variabili

tu mi dirai ma come faccio io a provare il bug con un semplice test
bene ma non sempre il bug viene fuori

quello della stampa viene fuori per chi ha applicazioni che continuamente fa l'anteprima e la stampa a me è capitata tante volte e per farlo funzionare ho dovuto cancellare manualmente la cartella temp e ridossare la colpa "a parole" al povero SO e il programma dopo ha funzionato
ma sapevo benissimo che era un bug di fw.

Prima di abbellire le classi con tante estetiche che non servono poi a niente come le ultime modifiche che ha fatto linares per il rpreview dei bottoni secondo me servivano tante cose utili come la correzzione di questo bug .

Una correzzione utile per esempio è stata la conversione da wmf a emf
gli faccio un applauso per questo...

non so se rendo l'idea
Best Regards, Saludos

Falconi Silvio
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Post by Enrico Maria Giordano »

Silvio wrote:quello della stampa viene fuori per chi ha applicazioni che continuamente fa l'anteprima e la stampa a me è capitata tante volte e per farlo funzionare ho dovuto cancellare manualmente la cartella temp e ridossare la colpa "a parole" al povero SO e il programma dopo ha funzionato ma sapevo benissimo che era un bug di fw.
A me non è mai capitato, non so che dirti.

EMG
Piscicelli Zingoni
Posts: 76
Joined: Wed Oct 12, 2005 5:52 pm
Location: Milan,Italy

Post by Piscicelli Zingoni »

La mia procedura di cancellazione dei files temporanei e' stata inserita nell'action dell'uscita del rpreview.prg

Prima di uscire cancello i wmf temporanei e con fw16 funziona sempre (anche utilizzando la funzione fattrib() per rilasciare il file qualore non fosse cancellabile.)
Anche con harbur funziona quasi sempre ad eccezione di qualche volta che non capisco da cosa dipenda.
Provando a mano a cancellare tale file (con l'exe ancora running) mi dice che il file e' aperto da un altro processo. Sicuramente, almeno penso, dall'exe di harbour (se i files da cancellare sono 30, 29 li cancella e 1 no)

Non mi rimane in questo caso di dare un messaggio (di mascheramento) e dire all'utente: PROBLEMA DI WINDOWS CON I FIELS TEMPORANEI, SI PREGA DI USCIRE E RIENTRARE NEL PROGRAMMA.
Solo cosi' poi funziona e questo, penso, e' la dimostrazione che c'e' qualche piccolo bug da qualche parte.

Purtroppo il problema non e' ripetibile o almeno dopo 3000 lanci e anteprime non so spiegarmi quando e come succede.

Mistero del s/w!

Ciao
User avatar
Marco Turco
Posts: 858
Joined: Fri Oct 07, 2005 12:00 pm
Location: London
Contact:

Post by Marco Turco »

x Piscitelli:

per risolvere il problema di una eventuale pagina rimasta aperta che ti impedisce di visualizzare correttamente la successiva anteprima, sostituisci il metodo startpage con questo allegato.

Si tratta in pratica di verificare se esiste già un file con un certo nome prima di utilizzarlo per il metafile. Se esiste ne utilizzo un altro.

Ciao

Marco

METHOD _StartPage() CLASS TPrinter

local lSetFixed,i,cWmfFileName

if ::hDC == 0
return nil
endif

lSetFixed := Set( _SET_FIXED, .F. )

if !::lMeta .and. ! ::lStarted
::lStarted := .T.
StartDoc( ::hDC, ::cDocument )
endif

::nPage++


if ::lMeta
for i:=1 to 9999
cWmfFileName:=::cDir + "\tmp" + PadL( i, 4, "0" ) + ".wmf"
if .not. file(cWmfFileName)
exit
endif
next

AAdd( ::aMeta, cWmfFileName)
::hDCOut := CreateMetaFile( ATail( ::aMeta ) )
else
StartPage( ::hDC )
endif

Set( _SET_FIXED, lSetFixed )

return nil
Piscicelli Zingoni
Posts: 76
Joined: Wed Oct 12, 2005 5:52 pm
Location: Milan,Italy

Post by Piscicelli Zingoni »

Se li cancello prima potrebbe succedere che il cliente ha lanciato 2 stampe diverse da 2 programmi fwin32 diversi e quindi gli cancellerei le anteprime.
Forse e' meglio modificare il metodo suggerito.

Grazie comunque
Post Reply