Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: ottavio8 - Agosto 24, 2016, 03:02:28 pm

Titolo: Problemi di stampa su programma console [RISOLTO]
Inserito da: ottavio8 - Agosto 24, 2016, 03:02:28 pm
Salve, ho il seguente problema:
sono riuscito a far funziona il mio vecchio programma in pascal su lazarus e un programma per la gestione fatture e magazzino di alcuni negozi. Questo programma è sviluppato tutto in modalita console. Su XP riesco a stampare tranquillamente sulla stampante usando il comando write(lst,'pippo') perchè ho installato un programma che mi fa vedere le stamapnti usb come ltpt sotto dos. Adesso questa cosa su Windows 7, 8 e 10 non funziona.
Ho provato a fare un applicazione console e usare printer4lazarus per stampare ma come cerco di prendere solo il nome della stampate mi va in errore la libreria.

La mia domanda è c'è un modo per stampare su stampante usb da un applicazione console?

LA libreria printer4lazarus  funziona su applicazione Windows application o come si di dice form.
 :-\ :-\
Titolo: Re:Problemi di stampa su programma console
Inserito da: supercim - Agosto 24, 2016, 06:31:18 pm
Io non sono esperto, per ora ho realizzato un solo programma in Lazarus, ma ti invio questo esempio, provalo e vedi se funziona.
Titolo: Re:Problemi di stampa su programma console
Inserito da: nomorelogic - Agosto 24, 2016, 07:30:59 pm
hai provato a mettere la stampante come condivisa e poi provare un comando dos come

dir >\127.0.0.1\nome_stampante_condivisa

se funziona credo che sei già a buon punto
Titolo: Re:Problemi di stampa su programma console
Inserito da: ottavio8 - Agosto 25, 2016, 04:38:29 pm
hai provato a mettere la stampante come condivisa e poi provare un comando dos come

dir >\127.0.0.1\nome_stampante_condivisa

se funziona credo che sei già a buon punto

Ciao, ho provato questa istruzione su XP tramite dos ma non da segni di vita la stampante.
La stampante è collegata tramite usb al computer.
Il comando lo lancio dallo stesso PC a cui è collegata la stampante.

Mi da questa risposta "Impossibile trovare il percorso specificato."
Ho messo 127.0.0.1 ho provato con l'indirizzo ip del computer e con il nome.
Hai qualche altro suggerimento?
Grazie Ciao
Ho provato sia mettendo 127.0.0.1
Titolo: Re:Problemi di stampa su programma console
Inserito da: ottavio8 - Agosto 25, 2016, 06:06:17 pm
Io non sono esperto, per ora ho realizzato un solo programma in Lazarus, ma ti invio questo esempio, provalo e vedi se funziona.

Ciao,
mi serve stampare direttamente da un programma di tipo console.
Per intenderci devo usare l'istruzione write(lst,'pippo').
Se trovi un esempio che funziona così sarò il programmatore + felice del mondo.

Titolo: Re:Problemi di stampa su programma console
Inserito da: nomorelogic - Agosto 25, 2016, 09:37:44 pm
ho trovato questo link, vedi se ti può essere utile

http://www.math.uni-leipzig.de/pool/tuts/FreePascal/units/node18.html

se printer4lazarus ti funziona con applicazioni GUI dovrebbe funzionare anche da programmi concole
Titolo: Re:Problemi di stampa su programma console
Inserito da: supercim - Agosto 26, 2016, 02:35:54 pm
Credo potresti usare l'istruzione:
Printer.Canvas.TextOut(pixelriga, pixelcolonna, varstamp);
assegni le coordinate e varstamp è la variabile di ciò che devi stampare.
Ti allego un esempio:
Titolo: Re:Problemi di stampa su programma console
Inserito da: ottavio8 - Agosto 26, 2016, 05:02:22 pm
ho trovato questo link, vedi se ti può essere utile

http://www.math.uni-leipzig.de/pool/tuts/FreePascal/units/node18.html

se printer4lazarus ti funziona con applicazioni GUI dovrebbe funzionare anche da programmi concole

Ciao,
ho provato a eseguire il codice dell'esempio in su windows 10 ma mi da l'errore che vedi nell'immagine allegata.
Grazie per il suggerimento.
Titolo: Re:Problemi di stampa su programma console
Inserito da: ottavio8 - Agosto 26, 2016, 05:07:41 pm
ho trovato questo link, vedi se ti può essere utile

http://www.math.uni-leipzig.de/pool/tuts/FreePascal/units/node18.html

se printer4lazarus ti funziona con applicazioni GUI dovrebbe funzionare anche da programmi concole

Ciao, scusa se ti disturbo ancora mi mdaresti un esempio di applicazione console che usa printer4lazarus?
Io ho fatto delle prove ma non sono riuscito.
Grazie ancora
Ciao
Titolo: Re:Problemi di stampa su programma console
Inserito da: ottavio8 - Agosto 26, 2016, 05:20:07 pm
Credo potresti usare l'istruzione:
Printer.Canvas.TextOut(pixelriga, pixelcolonna, varstamp);
assegni le coordinate e varstamp è la variabile di ciò che devi stampare.
Ti allego un esempio:

Ciao, grazie per l'esempio funziona perfettamente.
Solo che essendo un applicazione console non so come settare la stampante ho fatto delle prove ma non so come fare.
Se riesci mi manderesti un esempio di applicazione console che usa printer4lazarus.
Grazie ciao
Titolo: Re:Problemi di stampa su programma console
Inserito da: nomorelogic - Agosto 26, 2016, 06:30:22 pm
il Runtime(103) è un errore di file non trovato (o qualcosa del genere)
probabilmente la variabile lst non è inizializzata correttamente


per l'esempio printer4lazarus puoi dare un'occhiata qua
http://wiki.freepascal.org/Using_the_printer
Titolo: Re:Problemi di stampa su programma console
Inserito da: supercim - Agosto 28, 2016, 10:05:52 am
In passato programmavo sia in Basic che in Pascal, poi passai al Visual Basic, ma quando passavo l'eseguibile ad altri non funzionava, perchè dovevano installare delle directx, un compagno di classe mi consigliò: Lazarus, così l'eseguibile è subito funzionante. Se dovessi riprendere dei vecchi programmi, li rifarei per Lazarus, utilizzando gli oggetti. Se vuoi continuare con programma console, mandami un esempio, vedrò poi, di consigliarti.
Titolo: Re:Problemi di stampa su programma console
Inserito da: ottavio8 - Agosto 29, 2016, 02:50:25 pm
In passato programmavo sia in Basic che in Pascal, poi passai al Visual Basic, ma quando passavo l'eseguibile ad altri non funzionava, perchè dovevano installare delle directx, un compagno di classe mi consigliò: Lazarus, così l'eseguibile è subito funzionante. Se dovessi riprendere dei vecchi programmi, li rifarei per Lazarus, utilizzando gli oggetti. Se vuoi continuare con programma console, mandami un esempio, vedrò poi, di consigliarti.

Ciao,
prima di tutto grazie per la disponibilità.
In allegato c'è il progetto console che stampa un semplice testo (io di più non devo fare).
Quando lo mndao in esecuzione mi da errore alla riga 665 di printer.pas.
Mentre se faccio con le form funziona.
Non riesco a capire quale sia il problema nel pasaggio dall'applicazione con le form a quella con la console.
Giusto per farti capire sono alle prime armi con cose di questo tipo, l'ultima volta che ho lavorato con pascal c'era ancora il turbo pascal nel 1994.
Grazie ancora per l'aiuto.
Ciao ::)
Titolo: Re:Problemi di stampa su programma console
Inserito da: nomorelogic - Agosto 29, 2016, 03:24:33 pm
dovresti:
1) mettere tra le dipendenze del progetto anche il pacchetto printers4lazarus
2) mettere nella uses anche la unit osPrinters.

prova e facci sapere se funziona
ciao
Titolo: Re:Problemi di stampa su programma console
Inserito da: ottavio8 - Agosto 29, 2016, 03:57:28 pm
Ciao,
il pacchetto printer4lazarrus era già tra le dipendenze.
Adesso che ho aggiunto OSPrinter tra le uses mi da l'errore che vedi in foto.
Prima mi dava un altro errore in printer.pas alla riga 665.
Titolo: Re:Problemi di stampa su programma console
Inserito da: nomorelogic - Agosto 29, 2016, 04:13:22 pm
che versione di fpc/lazarus stai usando?

mi sa tanto che bisogna chiedere aiuto nel forum ufficiale, sembra un bug
Titolo: Re:Problemi di stampa su programma console
Inserito da: ottavio8 - Agosto 29, 2016, 05:17:37 pm
Ciao,
utilizzo la versione 1.6
versione FPC 3.0.0
Revisione SVN: 51630
x86_64-win64-win32/win64
In breve l'ultima versione presente sul sito ufficiale.
Titolo: Re:Problemi di stampa su programma console
Inserito da: nomorelogic - Agosto 30, 2016, 09:20:56 am
probabilmente è un bug e con un po' di fortuna lo hanno già corretto nella trunk
dovresti postare il programma e l'errore sul forum ufficiale
Titolo: Re:Problemi di stampa su programma console
Inserito da: ottavio8 - Agosto 30, 2016, 02:52:25 pm
Ciao,
sono riuscito a stampare tramite Printer da un programma console.
Come pacchetti ho messo Printer4Lazarus e LCL.
L'errore era dovuto alla mancanza nell'uses di Interfaces.
Ringrazio tutti per i consigli e le dritte in particolare @supercim per l'esempio di codice, da questo esempio sono riuscito a capire cosa mancava nell'applicazione console.
Sotto c'è il codice.
In allegato tutto il progetto.

Codice: [Seleziona]
program consolePrint;
       {$mode objfpc}{$H+}
uses
  Classes, SysUtils,  Printers, Interfaces, PrintersDlgs;
const
  LEFTMARGIN = 100;
  HEADLINE = 'I printed my first text on ';

var
  YPos, LineHeight, VerticalMargin: Integer;
  SuccessString: String;

begin

  SuccessString:=Printer.Printers.Strings[0];
  writeln(SuccessString);
  with Printer do
  try
    BeginDoc;
    Canvas.Font.Name:='Courier New';
    Canvas.Font.Size:=12;
    LineHeight:=Round(1.2 + Abs(Canvas.TextHeight('I')));
    VerticalMargin:=4*LineHeight;
    YPos:=VerticalMargin;
    SuccessString:=HEADLINE + DateTimeToStr(Now);
    Canvas.TextOut(LEFTMARGIN, YPos,SuccessString);
  finally
    EndDoc
  end;
end. 
Titolo: Re:Problemi di stampa su programma console [RISOLTO]
Inserito da: supercim - Agosto 30, 2016, 11:32:14 pm
Grazie! Sono stato indaffarato e non ho avuto tempo di capire perchè dava errore, son contento che hai risolto! :)
Titolo: Re:Problemi di stampa su programma console [RISOLTO]
Inserito da: ottavio8 - Agosto 31, 2016, 11:02:43 am
Grazie a te per l'aiuto.
Io da principiante di Lazarus Pascal non sapevo dove mettere mano.
Ciao