Newsgroup: it.comp.lang.visual-basic
Titolo: Lentezza pgm.

Buongiorno a tutti, qualcuno di voi sa dirmi se il mio pgm, che carica un
file TXT in una RichTextBox, lo modifica e lo salva sempre come TXT è lento
perchè i controlli sono tanti o perchè il file da modificare è di quasi
3.000 Kb?!?
Vi ringrazio in anticipo.
Paolo.

 3.000 Kb?!?
secondo me perché il file è quasi 3 Mb.
quanti controlli hai sul form?
Ciao
Faber

...


 non c'è il prezzo o che sconti fare se cambia il gruppo ecc.
può darsi che la lentezza sta nel fatto che per recuperare una riga passi
sempre dalla proprietà Text (o come si chiama) della RTF... se è così, le
soluzioni sarebbero:
- lavorare riga per riga senza RTF, cioè leggere una riga dal file di
origine, elaborarla, e scriverla nel file di destinazione
- caricare (magari con un meccanismo di paginazione) il file non in una RTF
ma in un array [dinamico] di stringhe, e poi fare l'elaborazione su quello
altrimenti non so, dovrei sapere più nel dettaglio come funziona il
programma...
Ciao
Faber

Da quello che ho capito non mi sembra che la soluzione migliore sia di
caricare il file di testo in un richtext box per poi modificarlo, io agirei
operando sui file ...
poi vedi tu ...

...

Scusa la mia ignoranza ma cosa intendi per operare sui file?
Io in effetti carico il file TXT nella Richtextbox e poi lo modifico ed  è
proprio l'operazione di modifica che mi rallenta notevolmente il lavoro.
Grazie.
Ciao.
Paolo.

...

Io sono abbastanza "nuovo" nel campo VB, ma non diventa più lungo il fatto
di leggere il file txt e scriverne un altro per ogni riga?
Poi in effetti io, l'RTF lo uso solo quando il file è stato interamente
modificato, perciò il fatto che rallenta il pgm è proprio la modifica del
contenuto edlla Richtextbox e non il prelevamento del file o la creazione
del txt nuovo.
Grazie.
Ciao.
Paolo.



Se ho capito bene tu hai un file composto da n righe e il contenuto della
riga trasformata dipende esclusivamente dai dati contenuta nella riga
sorgente ...
eseguirei un ciclo fatto in questa maniera
.. apro il file sorgente
.. creo un file tmp
do
   leggo la riga del sorgente
   elaboro la riga
   scrivo la riga ne file tmp
loop fino alla fine del sorgente
carico il file tmp nel richtextbox ( se serve ma a me non sembra ... )
chiudo il sorgente
chiudo il tmp
cancello il sorgente ( rinominalo in .bak non si sa mai )
rinomino il tmp con il nome del sorgente ...

 del txt nuovo.
è proprio quello che dicevo: come ha suggerito rain man, potresti fare una
cosa del tipo:
[Supponi di avere una funzione
Public Function ElaboraRiga(ByVal strRigaDaElaborare As String) As String
che, appunto, elabora una riga e la restituisce]
Dim strRiga As String
Open <percorso file da elaborare> For Input As #1
Open <percorso file elaborato> For Output As #2
Do Until EOF(1)
    Line Input #1, strRiga
    Print #2, ElaboraRiga(strRiga)
Loop
Close #1
Close #2
Questo, secondo me, dovrebbe essere il metodo più efficiente...
Ciao
Faber

...

GRAZIE del suggerimento, FUNZIONA. Il tempo si è ridotto di 10 volte!  :-)))

...

G R A Z I E.
Scusa se ho messo un po di tempo a capirlo, ma grazie, il tempo si è ridotto
di 10 volte !!!!   :-)))

 di 10 volte !!!!   :-)))
bello eh?  :))))))
Faber