Newsgroup: it.comp.lang.delphi
Titolo: TPrinter.printers & servizio

Cerco di essere breve...
Devo poter selezionare una stampate tra quelle disponibili per lanciare una
stampa con quickreport. Per settare la stampante "prn" uso:
Report.PrinterSettings.PrinterIndex:=printer.Printers.IndexOf(prn);
in generale questo funziona. Il problema e' che il mio progetto e' un
servizio, e'  multithread, e carica una DLL che lancia il report. Il
servizio viene eseguito come adminstrator. Con la stampante di default
stampa. In pratica il riferimento al metodo  "printer" genera un errore di
riferimento in memoria. Forse TPrinter non puo' essere istanziato da un
servizio? qualcuno mi illumina???
ciauz!
maz


Non vorrei depistarti, ma ti chiedo: lo scoppio e' lagato ad una stampante
particolare?
I programmi in delphi hanno dei seri problemi con le Laserjet HP.
-- 
Morde. 
(morde at programmer dot net)

 ha scritto nel messaggio
news:bde7ov$rv9gj$1...@ID-194014.news.dfncis.de...
Mi rispondo da solo visto che ho risolto..
la funzione Printer che dovrebbe ritornare un'istanza di TPrinter invece
ritorna nil. Non so perche'.
Istanziandola manualmente con TPrinter.create funzia.
Riporto per curiosita' questa frase dell'help di delphi:
"Never call Create directly. Create is called automatically by the Printer
function".
;-)
maz


Ciao Morde.
Scusa la domanda: cosa intendi con  SERI PROBLEMI  ?
Puoi essere un po' piů preciso ?
Grazie.
phora

 ;-)
Mi sembra strano possa restituirti nil, dato che la funzione Printer è
un mezzo singleton. L'oggetto globale che mantiene le stampanti è già
stato creato.
Puoi usare una dichiarazione di questo tipo:
fPrinter: TPrinter; 
ma non hai bisogno di istanziare con il costruttore. Puoi effettuare
operazioni tipo:
begin
  fPrinter := Printer;
  Memo1.Lines.Assign(fPrinter.Printers);
end;
L'esempio è stupido perché non hai bisogno di dichiarare un oggetto di
tipo TPrinter in questo caso, però puoi avere più dichiarazioni per
mantenere i singoli dettagli di ogni stampante installata  nel sistema.
guastatore

 ma non hai bisogno di istanziare con il costruttore.
[CUT]
lo so che e' strano.. eppure se non istanzio con il costruttore mi da access
violation... forse perche' la mia appicazione e' un servizio?? mah.. cmq in
questo modo funziona bene...
grazie..
maz

Puoi essere un po' più preciso ?
Vai su google, clicca su gruppi, scrivi nell'edit "delphi laserjet problem",
clicca sul bottone magico e.... incomincia a pregare per quello che vedrai.
Detto in altre parole: le hp laserjet hanno problemi di driver con i programmi
scritti in delphi. Se un tuo cliente si lamenta che il tuo programma non va
quando stampa, e ha una laserjet, come prima cosa fagli aggiornare il driver.
La bestia nera dell'hp e' la laserjet 1100: siamo impazziti a trovare un
driver adatto che non scoppiasse con il programma di stampa fatture.
Anche la zucchetti con il "gestionale 1" ad oggi presenta ancora problemi di
incompatibilita' con questa stampante.
Ciao


Confermo.
Programma di stampa etichette.
Il programma che avevo fatto scrive direttamente sul canvas della stampante
facendo calcoli sul formato, la posizione dell'etichetta, posizionando
immagini, impostando il salto pagina, e ricordandosi per il formato che si č
selezionato anche l'ultima posizione sfruttata nell'ultima stampa fatta
usando quel formato per poter ripartire dalla successiva.
Bene, il programma dopo varie prove funzionava alla grande. Mi chiama il
commissionatore... e mi dice che non posiziona correttamente le
etichette.... ne salta qualcuna, le posiziona un po' dove gli pare. Uhm
cavolo dico io , strano perchč qui a casa funziona tutto correttamente...
Mi manda dei fax ed in effetti era vero. Vado in ufficio da lui e dopo
esserci giocati il paradiso capiamo che il problema avveniva con una
macchina in particolare.... opzioni di compilazione, copie di dll..
niente!!!!
SU QUELLA MACCHINA C'ERA UNA LASERJET 1100 !!!!!
Scaricati i driver di agosto 2000 e funziona
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Aahhhhhhhhhh ma cavolo!!!! Dopo 2 anni dall'uscita della stampante mi fixano
questi errori?
Che tristessa :)

resto provo con l'aggiornamento dei driver.
Son felice che il thread ti cada "a fagiuolo": quando capitano queste cose, e
non si sa cosa fare, la situazione e' alquanto imbarazzante.... purtroppo io e
David ne sappiamo qualcosa....
Ciao!


;)