Newsgroup: it.comp.lang.visual-basic
Titolo: Lettura da disco...

Questo è un problema abbastanza stupido, ma non so proprio come risolverlo.
In un piccolo programma leggo dei file da disco e quando questi sono grandi
bloccano tutto fino a che la lettura non è terminata.
Fin qui niente di male; però per abbellire un po' la grafica ho pensato di
far comparire una label con un messaggio prima di iniziare a leggere il file
e di farla sparire subito dopo.
Il problema è che la lettura del file inizia troppo presto e della label
fanno appena in tempo a comparire i contorni.
Esiste un metodo per ovviare a questo problema?

 Esiste un metodo per ovviare a questo problema?
Far saltare la coda (in classico stile italiano :PPP) al WM_PAINT:
Label1.Caption = "Testo"
Label1.Refresh
Ciao
--
using System.Gtk.Forms = "
http://www.neodatatype.net/windowsforms/sgf.aspx
"
mathParser = "
http://www.neodatatype.net
"
sitoComune = "
http://www.it-lang-vb.net
"

> Far saltare la coda (in classico stile italiano :PPP) al WM_PAINT:
Per una volta lo stile italiano funziona alla perfezione!
Grazie mille!

 Label1.Refresh
Dovrebbe bastare anche un DoEvents.
Bye, G.

 Dovrebbe bastare anche un DoEvents.
Ovviamente sono due cose ben diverse :)
Ciao

 Ovviamente sono due cose ben diverse :)
...con lo stesso effetto :-)    (nel caso in questione, intendo)
Un Paperino "Proooova..."

 ...con lo stesso effetto :-)    (nel caso in questione, intendo)
Lo sai bene che per affermare cose del genere dovresti conoscere l'intero
contesto :P
Ciao

 Fin qui niente di male;
Bè...questione di opinioni: ho anche io un programma che legge txt e li
mette in una richtextnbox...però il caricamento è mooooolto (dico molto)
lento e talvolato causa un errore di esaurimento della memoria...certo il
file può arrivare ai 250 kb ma credo che provocare un errore (mi pare che si
il 57) per un file di testo mi sembra eccessivo! Inoltre capita che  il
programma si blocchi costringendomi e premere i tasti piò consumati della
mia tastiera (Ctrl+Alt+Canc).
Le mie domande sono perciò:
1.Come evito che il blocco del programma?
2.Come rendo più veloce il caricamento del file?
3.Come evito lo sfarfallio del puntatore del mouse e di altri controlli
durante il caricamento del file?
4.Come evito che il sistema sia inutilizzabile ogni volta che carico un
file?
5[OT].Come evito che ogni anno esca un aggiornamento di windows che viene
spacciato come un nuovo e potente sistema operativo costringendo tante
persone ingenue (vittime della propria ingenuità e ignoranza) ad acquistare
tale "prodotto informatico" ? (bè forse questo è inevitabile...)
Posto anche il codice di caricamento così vedete se si può fare qualcosa
(per risolvere i primi 4 punti)
---
Private Sub Command2_Click()
Dim s As String
Dim nome As String
Dim percorso As String
Dim n As Integer
n = FreeFile
nome = "appunti.txt"
percorso = App.Path + "\" + nome
Open percorso For Input As #n
Do While Not EOF(n)   ' Cerca la fine del file.
Line Input #n, s
text2.Text = text2.Text + vbNewLine + s
Loop
Close #n
End Sub
---
Scusate se ho fatto tante domande...intanto vi ringrazio per l'aiuto che mi
darete.
p.s.uso visual basic 6

 End Sub

 Pensi che Word (o WordPad) carichi tutto?
A giudicare dal tempo direttamente proporzionale alle dimensioni
del file direi di sě...
Ciao.
-- 
BSD is for UNIX lovers -- linux is for Windows haters.

 del file direi di sì...
Una scommessina la farei. Dove lo mette se la memoria non basta?
Secondo me carica quel che è contestualmente coerente (un'ampia "finestra"
del file, ma proporzionalmente molto più piccola del file stesso, in
funzione della memoria disponibile) e, a seconda degli spostamenti, ne
carica un altro pezzo/finestra. In tutta sincerità, non concepirei il
contrario.

 contrario.
La teoria vorrebbe quello, ma ho avuto esperienza del contrario
cercando di aprire (per sbaglio) file di più di 100 MB con
Wordpad e riscontrando tempi eccessivamente lunghi. 
Comunque è possibile controllare con precisione, essendo
disponibili i sorgenti di Wordpad...


 Una scommessina la farei. Dove lo mette se la memoria non basta?
Word credo carichi un pezzo alla volta, questo spiegherebbe la lentezza di
alcuni spostamenti tra le pagine.
Wordpad invecie carica sicuramente tutto in una botta, infatti se il file č
grosso sotto c'č persino l'indicazione della percentuale di caricamento e il
programma non si schioda finchč non giunge al 100%.
La memoria esaurita č comunque piuttosto difficile (ma non impossibile)
poichč ci pensa win a swappare su quella virtuale, e non ho mai visto file
di testo da 500mb.
Ciao

 fanno appena in tempo a comparire i contorni.
Contro ":-P" a te :-)
Bye, G.

 tale "prodotto informatico" ? (bè forse questo è inevitabile...)
Passa a Linux e/o BSD... se puoi. Il marketing MS, e non solo quello[1],
funziona così, non c'è niente da fare, salvo informarsi e informare gli
altri.
[1] Non è il caso di buttare la cosa in politica, qui. Ma ne avrei una
voglia...
Bye, G.

     Input (LOF(n),Text2.Text) ' legge tutto il file in un colpo solo

 >     Input (LOF(n),Text2.Text) ' legge tutto il file in un colpo solo
Text2.Text = Input(#1, Lof(n))
Il problema sorge se si usa
Text2.Text & NuovaStringa
Così la velocità decade in modo esponenziale data la gestione dello
stringmanager di VB.
Molto meglio fare
Text2.SelStart = Len(Text2.Text)
Text2.SelText = NuovaStringa
Ma giustamente la LoadFile per gli RTB è ancora meglio.


 Text2.Text = Input(#1, Lof(n))
Ma stamattina in quanti abbiamo toppato: ;-)
Text2.Text=Input(Lof(1),1)

 nell'help :)
Anche perché è sbagliata perfino nel manuale :-))))
http://groups.google.it/groups?selm=7hd62b%24epk%241%40urano.inet.it
e seguenti...
Bye, G.