View Full Version : [C++]Stampare files
Kleidemos
21-05-2003, 20:44
Come stampo un files???
maxithron
21-05-2003, 21:48
devi stampare il contenuto di un files oppure l'output che ti restituisce?
Stampare files in genere dipende dal routine messe a disposizione dal sistema operativo...
Kleidemos
22-05-2003, 05:32
Originally posted by "maxithron"
devi stampare il contenuto di un files oppure l'output che ti restituisce?
il contenuto!
Sto creando un engine , in C++ standard x portabilita, x un editor.
P.S: c'è pure un mio post a riguardo
#include <stdio.h>
#include <stdlib.h>
main()
{
FILE *fp;
FILE *st;
char buf[256];
st = fopen("LPT1","w");
if(!st) {// problemi}
fp = fopen("miofile.txt","r");
if(!fp) {// problemi}
// leggo da file e stampo
while(fgets(buf,sizeof(buf),fp) != NULL)
fprintf(st,"%s",buf);
fclose(fp); // chiudo file
fclose(st); // chiudo stampante
}
Comunque non è codice portabile...e non funziona su tutte le stampanti...
Kleidemos
22-05-2003, 12:44
risolto:
void Engine::Print()
{
#if defined(WIN32)
#define PRINT "PRINT"
#elif defined(POSIX)
#define PRINT "lpr"
#else
#error Unknow Operating Sistem
#endif
#define FILE_TO_PRINT _filename
system("PRINT FILE_TO_PRINT");
}
Attento che con una stampante "Windows only" la stampa con print non funziona (purtroppo)...
Kleidemos
22-05-2003, 14:46
Originally posted by "cionci"
Attento che con una stampante "Windows only" la stampa con print non funziona (purtroppo)...
cazz!
Ma sono tanto diffuse?
La mia laser lo è :mad:
Comuqnue puoi usare le API di Windows...
void engine::print()
{
#ifdef WIN32
//usi le API Win32
#else
//fai al stampa con lpr (sempre che sia un testo solamente)
#endif
}
Kleidemos
22-05-2003, 15:43
qual' è l'API?
:pig:
Quali sono semmai... Un bel po'...
PRINTDLG pd;
DOCINFO di;
ZeroMemory(&pd,sizeof (PRINTDLG)) ;
pd.lStructSize = sizeof (PRINTDLG);
pd.Flags = PD_ALLPAGES | PD_COLLATE | PD_RETURNDC |PD_USEDEVMODECOPIESANDCOLLATE | PD_HIDEPRINTTOFILE | PD_NOSELECTION;
pd.nCopies = 1;
di.cbSize = sizeof(DOCINFO);
di.lpszDocName = "Stampa orario";
di.lpszOutput = NULL;
di.lpszDatatype= NULL;
di.fwType = 0;
if(PrintDlg(&pd)!=0)
{
StartDoc(pd.hDC,&di);
StartPage(pd.hDC);
int y = GetDeviceCaps(pd.hDC, VERTRES)/55; //infilo 55 righe in una pagina
TextOut(pd.hDC,x,y,(LPCTSTR)"ciao",4);
EndPage(pd.hDC);
EndDoc(pd.hDC);
}
DeleteDC(pd.hDC);
Louder Than Hell
19-06-2003, 10:41
Originally posted by "misterx"
#include <stdio.h>
#include <stdlib.h>
main()
{
FILE *fp;
FILE *st;
char buf[256];
st = fopen("LPT1","w");
if(!st) {// problemi}
fp = fopen("miofile.txt","r");
if(!fp) {// problemi}
// leggo da file e stampo
while(fgets(buf,sizeof(buf),fp) != NULL)
fprintf(st,"%s",buf);
fclose(fp); // chiudo file
fclose(st); // chiudo stampante
}
in c++ dovrebbe essere
void stampa(){
ofstream stampante("LPT1");
ifstream in("file.txt");
while(in.get(ch)){
stampante<<ch;
}
stampante.close();
in.close();
}
??? Funziona però appena finisce di stampare non fa uscire tutto il foglio che deve essere estratto manualmente :cry:
prova ad inviare invia un 'LF' :)
Semmai un FF...Form Feed...però non mi ridordo il carattere da scrivere sulla porta...
Louder Than Hell
19-06-2003, 14:53
stampante<<ff? :confused:
Scusate ma non posso provarli direttamente perchè ho incasinato un pò il programma e adesso devo rimetterlo apposto! :muro:
Non mi ricordo il valore del form feed...ma era uno dei primi...un attimo che cerco...
stampante << (char)0x0C;
Originally posted by "cionci"
Semmai un FF...Form Feed...però non mi ridordo il carattere da scrivere sulla porta...
bravo, non mi ricordavo più Form Feed=sputa il foglio :D
Louder Than Hell
19-06-2003, 22:30
Bene grazie mille ho finito tutto!
Adesso dovrei implementare la ricerca per nome invece che per id ma non riesco ad usare getline e la stampa di un singolo id o di più id. Ormai ho il cervello fuso lo farò un altra volta :muro:
EDIT:ripensandoci...potri farlo anche con get e basta ma non ne ho la minima voglia in questo momento! :D
Grazie ancora ciau!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.