PDA

View Full Version : [vb] formattazione file di testo


first register
05-10-2009, 23:57
vorrei formattare alcuni file di testo con un programma vb e subito dopo salvare ogni singolo file conservando anche le informazioni sulla formattazione ad es. dimensione del carattere, allineamento, tipo del font, etc... etc...

Purtroppo però i semplici file di testo.txt non conservano le info sulla formattazione.... come potrei ovviare al problema ?

Albez79
06-10-2009, 07:29
converti il tutto in word con l'oggetto word.application e salvi formattazione e altro come meglio credi

MarcoGG
06-10-2009, 08:43
vorrei formattare alcuni file di testo con un programma vb e subito dopo salvare ogni singolo file conservando anche le informazioni sulla formattazione ad es. dimensione del carattere, allineamento, tipo del font, etc... etc...

Purtroppo però i semplici file di testo.txt non conservano le info sulla formattazione.... come potrei ovviare al problema ?

Se leggi questi "file di testo", da cui estrai il testo da formattare, la risposta più logica è : salva nello stesso formato sorgente.

Se i sorgenti sono .txt, e vuoi formattarli visivamente in una Form VB6 ( suppongo tu usi VB6 ) , caricali in una RichTextBox, formattali, e poi li salvi in normali .txt, direttamente dalla RichTextBox, con tutte le informazioni sulla formattazione :

RichTextBox1.LoadFile(...)
...
RichTextBox1.SaveFile(...)
;)

first register
06-10-2009, 14:37
Questo pomeriggio le ho provate tutte, (Vb 6.0) non è un problema di codice perchè il programma funziona bene, il file è salvato correttamente ma non c'è traccia delle info sulla formattazione del testo.
Così alla riapertura del file il testo non è formattato.

Ora per risolvere il problema potrei passare ad un altro formato ?

MarcoGG
06-10-2009, 15:43
Questo pomeriggio le ho provate tutte, (Vb 6.0) non è un problema di codice perchè il programma funziona bene, il file è salvato correttamente ma non c'è traccia delle info sulla formattazione del testo.
Così alla riapertura del file il testo non è formattato.

Ora per risolvere il problema potrei passare ad un altro formato ?

Sì, ok, ma non dai nessuna info sul COME.
- da dove prendi il testo.
- come fai a formattarlo.
- come salvi il testo formattato.

Senza vedere il tuo codice è impossibile capire e consigliare...

first register
06-10-2009, 16:48
Sì, ok, ma non dai nessuna info sul COME.
- da dove prendi il testo.
- come fai a formattarlo.
- come salvi il testo formattato.

Senza vedere il tuo codice è impossibile capire e consigliare...

1) il testo sta su un file di testo.txt, il file è aperto con Open for input/output as #1 per la lettura/scrittura.
2) per la formattazione ho pensato di utilizzare le funzioni della richtextbox

es.
RichTextBox1.SelBold = True 'per il grassetto
RichTextBox1.SelAlignment = vbright ' o vbcenter per l'allineamento


3)questo non lo so...
in effetti fin'ora ho salvato il contenuto della richtextbox sul file ma non sono sicuro che la richtexbox passi anche le info per la formattazione.
Non saprei come verificare se il file di testo contiene anche le info per la formattazione del testo.


Cmque mi sembra di aver capito che utilizzando dei file di testo non è possibile dare un allineamento Giustificato, (che poi è quello che dovrei utilizzare io per la stampa).

Più che altro dovrei semplificare al massimo le operazioni di formattazione del testo.

Albez79
07-10-2009, 08:53
salva il contenuto del file su un documento di word! utilizzare l'oggetto word.application è semplicissimo! puoi formattare il testo a tuo piacimento

MarcoGG
07-10-2009, 10:50
Cmque mi sembra di aver capito che utilizzando dei file di testo non è possibile dare un allineamento Giustificato, (che poi è quello che dovrei utilizzare io per la stampa).

Più che altro dovrei semplificare al massimo le operazioni di formattazione del testo.

Se il Justify è una priorità, non credo sia proprio disponibile a livello di rich text format .rtf, e men che meno lo è in un .txt.
Neanche WordPad supporta il Justify e credo sia basato praticamente sullo stesso Ocx...

A sto punto puoi provare a guardare qui :
http://www.vbforums.com/archive/index.php/t-275310.html
dove sembra ci sia un modo per estendere il Justify alla RichTextBox ( codice che personalmente non ho mai provato ).
Oppure passare decisamente a formati più evoluti, .doc, .pdf, ecc...

first register
07-10-2009, 14:55
salva il contenuto del file su un documento di word! utilizzare l'oggetto word.application è semplicissimo! puoi formattare il testo a tuo piacimento

Se il Justify è una priorità, non credo sia proprio disponibile a livello di rich text format .rtf, e men che meno lo è in un .txt.
Neanche WordPad supporta il Justify e credo sia basato praticamente sullo stesso Ocx...

A sto punto puoi provare a guardare qui :
http://www.vbforums.com/archive/index.php/t-275310.html
dove sembra ci sia un modo per estendere il Justify alla RichTextBox ( codice che personalmente non ho mai provato ).
Oppure passare decisamente a formati più evoluti, .doc, .pdf, ecc...

Fin'ora ho sempre lavorato con semplici file di testo mi date qualche link in più per l'uso dei file.doc ?
Dovrei inserire il contenuto del file di testo dentro un file.doc, formattare il testo e visualizzarlo nella richtextbox, oppure all'interno dell'applicazione.

Albez79
07-10-2009, 15:01
per lavorare con word da vb6

http://www.mrwebmaster.it/visual-basic/articoli/scrivere-file-word-vb6_308.html

in rete c'è diverso materiale su questo argomento

first register
07-10-2009, 15:07
per lavorare con word da vb6

http://www.mrwebmaster.it/visual-basic/articoli/scrivere-file-word-vb6_308.html

in rete c'è diverso materiale su questo argomento

Ottimo grazie.
ho ancora due domande

Per i pdf è la stessa cosa ?
Dopo aver creato il file word posso visualizzare il testo formattato in una richtextbox ?
:)

Albez79
07-10-2009, 15:52
per i pdf qui

http://www.vb6.us/tutorials/visual-basic-tutorial-pdf



per quanto riguarda la richtextbox non credo possa mantenere la stessa formattazione di word, poi dipende dal "grado" di formattazione
prova a fare una ricerca in giro

MarcoGG
07-10-2009, 15:55
Per i pdf è la stessa cosa ?
Dopo aver creato il file word posso visualizzare il testo formattato in una richtextbox ?
:)

Per i Pdf devi avere a disposizione DLL e/o OCX specifici per manipolarli, che non sono inclusi in VB6, e che perciò devi cercare, sperando di trovare qualcosa di free e valido.

Come già detto, la richtextbox non supporta il Justify, perciò se apri il testo di un .doc in una RTB, il rischio di perdere parecchie informazioni di formattazione è alto, e non solo riguardo al Justify...
Una strada sono gli OLE container, un'altra, con cui puoi provare a giocare è avere un semplice controllo WebBrowser :

WebBrowser1.Navigate ("C:\Test.doc")

first register
07-10-2009, 16:10
Per i Pdf devi avere a disposizione DLL e/o OCX specifici per manipolarli, che non sono inclusi in VB6, e che perciò devi cercare, sperando di trovare qualcosa di free e valido.

Come già detto, la richtextbox non supporta il Justify, perciò se apri il testo di un .doc in una RTB, il rischio di perdere parecchie informazioni di formattazione è alto, e non solo riguardo al Justify...
Una strada sono gli OLE container, un'altra, con cui puoi provare a giocare è avere un semplice controllo WebBrowser :

WebBrowser1.Navigate ("C:\Test.doc")

No io per fortuna ho sempre lavorato su file di testo.txt dunque eventualmente passare a word sarebbe un vantaggio.

Mi chiedevo però se potrei visualizzare il contenuto dei file.doc su una richtextbox, perchè vorrei visualizzare il contenuto del file all'interno dell'applicazione senza aprire word.

Inoltre è possibile formattare in modo diverso le righe di un file word ?
Ad esempio il titolo con carattere 20 ed il resto del documento con carattere 12 ?
Queste informazioni saranno visualizzate dalla richtextbox?

first register
07-10-2009, 21:21
Up.
Qualsiasi formato andrebbe bene, purchè mi permetta di avere una richtextbox (o altro oggetto simile) con testo ben formattato.

MarcoGG
07-10-2009, 21:38
Le cose stanno così :

1. Per creare documenti .doc devi comunque referenziare da VB6 le librerie Word che ti permettono di usarne il modello ad oggetti, quindi Word deve essere installato comunque. Esisteranno sicuramente librerie free ( non credo ) o a pagamento che permettono di creare e leggere/mostrare dei .doc senza Word installato... Io non ne ho mai usate.

2. Se tenti di aprire un .doc da RTB perdi molta formattazione e inoltre vengono inseriti tutti i caratteri ( invisibili in word ) di definizione struttura documento, metadati, e vario ciarpame indesiderato.

3. Se invece apri un .rtf creato con Word, WordPad o altro, va tutto bene, ma la RTB il Justify non lo fa comunque, e sei daccapo.

In ogni caso, se Justify è importante, il RTB è da scartare, sia in scrittura che in lettura, da qui il mio suggerimento di caricare il tuo .doc o .rtf usando un controllo WebBrowser, il che non significa che "devi aprire Word" per vederlo, ma viene aperto nella cornice del WebBrowser sulla tua Form VB6.

first register
07-10-2009, 23:56
Le cose stanno così :

1. Per creare documenti .doc devi comunque referenziare da VB6 le librerie Word che ti permettono di usarne il modello ad oggetti, quindi Word deve essere installato comunque. Esisteranno sicuramente librerie free ( non credo ) o a pagamento che permettono di creare e leggere/mostrare dei .doc senza Word installato... Io non ne ho mai usate.

2. Se tenti di aprire un .doc da RTB perdi molta formattazione e inoltre vengono inseriti tutti i caratteri ( invisibili in word ) di definizione struttura documento, metadati, e vario ciarpame indesiderato.

3. Se invece apri un .rtf creato con Word, WordPad o altro, va tutto bene, ma la RTB il Justify non lo fa comunque, e sei daccapo.

In ogni caso, se Justify è importante, il RTB è da scartare, sia in scrittura che in lettura, da qui il mio suggerimento di caricare il tuo .doc o .rtf usando un controllo WebBrowser, il che non significa che "devi aprire Word" per vederlo, ma viene aperto nella cornice del WebBrowser sulla tua Form VB6.


Stasera ho già tentato di inserire qualche file con formato .doc, non ho avuto nessun problema con la creazione e la scrittura del file, ma avrei dovuto dedicare molto tempo alle impostazioni della formattazione, così poichè alla fine stavo lavorando su file.doc attraverso il vb6 ho deciso di cambiare strada.

Se ho ben capito il web browser è un ottimo consiglio, farò così.
Spero di riuscire ad inserire tutte le info sulla formattazione. Non mi dispiacerebbe creare dei file pdf, ma questo potrei farlo anche dopo aver aperto i file .txt sul webbrowser.


Approfitto della tua esperienza per chiederti se la presenza del controllo webbrowser nel mio progetto vb rende il programma vulnerabile o attiva qualche falla di vb.

MarcoGG
08-10-2009, 13:10
Se ho ben capito il web browser è un ottimo consiglio, farò così.
Spero di riuscire ad inserire tutte le info sulla formattazione. Non mi dispiacerebbe creare dei file pdf, ma questo potrei farlo anche dopo aver aperto i file .txt sul webbrowser.


Approfitto della tua esperienza per chiederti se la presenza del controllo webbrowser nel mio progetto vb rende il programma vulnerabile o attiva qualche falla di vb.

Il controllo WebBrowser che intendo è questo :
Microsoft Internet Controls
"C:\Windows\system32\shdocvw.dll"

Io l'ho consigliato principalmente per visualizzare i .doc o .rtf. Se vuoi usarlo anche per modificarli/salvarli penso possa andare, ma ovviamente dovrai lavorarci su parecchio per creare qualcosa di elegante e fruibile da un cliente...

No, che io sappia non crea alcun problema nè vulnerabilità, anche perchè in questo tipo di utilizzo si limita a leggere/scrivere su file locali.

Fedd
08-10-2009, 13:17
ma se salvi il file in un formato tuo e gli aggiungi una specie di "intestazione" con i dettagli quali colore ecc...che poi vai a ripescare e setti la richtextbox di conseguenza?

MarcoGG
08-10-2009, 13:27
ma se salvi il file in un formato tuo e gli aggiungi una specie di "intestazione" con i dettagli quali colore ecc...che poi vai a ripescare e setti la richtextbox di conseguenza?

Ma anche il RichTextBox produce in output un testo con intestazioni, tags vari ecc., ma alla fine se il RTB non capisce il Justify, non lo capisce, punto.
Per questo avevo linkato quella pagina, in cui sembra che qualcuno abbia trovato un sistema, per vie traverse, per far "capire" a RTB il concetto del Justify...