Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Caricamento testo "a pezzi" in una RTB

Salve, devo caricare in una richTextBox del testo che è molto lungo e per
questo non è accettabile caricarlo tutto in una volta ... (ci metterebbe una
decina di minuti!) ... come posso fare per "riempire" di testo solo l'area
visibile della RichTextBox e poi quando "scrollo" caricare a mano a mano il
testo da visualizzare ?
Qualcuno ha affrontato già questo tipo di problema ?
Quanche suggerimento ?
GRAZIE


 ti posso dare un paio di suggerimenti
prima di tutto inserisci un rich e poi una o due scroolbar dipende se vuoi
anche l'orrizontale
dovrai avere una variabile per il seek di posizionamento nel file
nell'evento scrool (della scrollbar) ti posizionerai nel file (usando la
variabile per il posizionamento precedentemente memorizzata)e assegnerai le
linee lette sostituendo il testo del rich .In questo modo non avrai(quasi)
nessun problema.
chiaramente rimane quello di implementare il codice per leggere da file ma
credo che non sia poi così difficile
ciao

 decina di minuti!)
Una DECINA di minuti ???  scusa, ma che tipo di file è ?
A me un file (di testo puro) da vari mega viene letto in
pochi secondi... Aspe' provo.
Allora, 3 secondi e tre decimi per un file di 5 mega abbondanti.
Per metterci una decina di minuti... boh ?
Comunque una cosa importante è il formato. Se è solo testo
puoi lavorare come pensi (cioè col sistema suggerito da Franco),
ma se è RTF no; dovresti caricare l'header a parte, e poi
smazzarti tutto il codice RTF...
Bye, G.

 Per metterci una decina di minuti... boh ?
i dati li prendo da un db access in cui faccio un ciclo di lettura che
esegue piů di 31.000 iterazioni ......
vorrei trovarte il sistema per leggere solo n iterazioni tale che l'area
visibile della rtb sia piena poi quando sposto il cursore mi carichi "al
volo" le altre righe e cosi via ....
suggerimenti ?
GRAZIE

 volo" le altre righe e cosi via ....
Per questo, ti posso suggerire di usare una ScrollBar separata da
quella della RTBox ed eseguire la query all'evento Change di quella.
La query dovrebbe essere fatta in modo da restituirti solo i record
necessari, quindi.
Ma questo non č affatto il mio campo e passo la palla a chi ne sa di piů :-).
Bye, G.

 Ma questo non č affatto il mio campo e passo la palla a chi ne sa di piů
:-).
una di quelle di cui sopra ? :)
ma che tabella o query e' ?
con una tabella semplice, gestita via sql ( con seek sarebbe troppo semplice
:)
impiega molto meno:
Private Sub Command1_Click()
    Dim s As String, s2 As String, j As Long, c As Long, t As Long, time1
    time1 = Timer
    Dim db As Database, rs As Recordset
    Set db = OpenDatabase("db2.mdb")
    For j = 97 To 122
        s = "select * from indice where nome like '" _
            & Chr(j) & "*' order by nome"
        Set rs = db.OpenRecordset(s, dbOpenDynaset)
        With rs
            .MoveLast
            c = .RecordCount
            t = t + c
            s2 = s2 & Chr(j) & ": " & c & " - " _
                & Format(Timer - time1, "###,##0.000") & vbCrLf
            .MoveFirst
            Do While Not .EOF
                s = s & !nome & vbCrLf
                .MoveNext
'                DoEvents
            Loop
        End With
'        s = s & vbCrLf & "Record: " & CStr(t) & " - Tempo: " _
'            & Format(Timer - time1, "###,##0.000")
        RTB.Text = RTB.Text & s
        RTB.SelStart = Len(RTB.Text)
    Next
    rs.Close: Set rs = Nothing
    db.Close: Set db = Nothing
    s = "Record tot: " & CStr(t) & " - Tempo: " _
        & Format(Timer - time1, "###,##0.000")
    RTB.Text = RTB.Text & vbCrLf & vbCrLf & s2 _
        & vbCrLf & vbCrLf & s
    RTB.SelStart = Len(RTB.Text)
End Sub
compilato:
a: 1318 - 0,070
b: 2116 - 0,813
c: 2506 - 1,291
d: 904 - 2,936
e: 299 - 3,164
f: 974 - 3,355
g: 1295 - 3,635
h: 131 - 3,986
i: 267 - 4,227
j: 97 - 4,477
k: 151 - 4,717
l: 707 - 4,979
m: 3198 - 5,309
n: 323 - 7,902
o: 277 - 8,262
p: 1630 - 8,703
q: 82 - 9,283
r: 1156 - 9,713
s: 1648 - 10,244
t: 981 - 11,115
u: 65 - 11,857
v: 802 - 12,619
w: 85 - 13,510
x: 11 - 14,590
y: 6 - 15,422
z: 269 - 16,484
Record tot: 21298 - Tempo: 17,385
nell'ide ci mette circa 2" di meno. invece non cambia molto scommentando il
doevents.
immagino che la query di claudio sia discretamente complessa.
ciao, j.
--
www.sundaysw.com