Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - velocizzare lettura wordlist
Forum - C# / VB.NET - velocizzare lettura wordlist

Avatar
walker93 (Member)
Expert


Messaggi: 460
Iscritto: 31/01/2010

Segnala al moderatore
Postato alle 21:50
Mercoledì, 19/05/2010
salve a tutti
ho una wordlist di 10140 parole (senza verbi) scritta in un file .txt
mi servirebbe velocizzare la lettura del file in quanto le parole sono molte
adesso uso un for each e l'istruzione IO.File.ReadAllLines("percorso") che restituisce un array
solo che è troppo lento devo  riuscire a velocizzare il tutto

P.S. non voglio fare l'hacker la wordlist non serve per beccare la password di qualcuno

PM Quote
Avatar
Grubby (Normal User)
Pro


Messaggi: 85
Iscritto: 02/04/2010

Segnala al moderatore
Postato alle 22:09
Mercoledì, 19/05/2010
Prova ad aprirlo come fileopen(,,,,openmode.random) e a usare l'istruzione EOF per far scorrere tutte le parole intanto che le scorri le metti dove le devi mettere:)
fammi sapere se funziona

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 21:15
Giovedì, 20/05/2010
Tu prima leggi tutto il file, splitti le righe, ottieni l'array e scorri l'array. Sarebbe più diretto leggere e manipolare direttamente una riga alla volta dal file:
Codice sorgente - presumibilmente VB.NET

  1. Dim Reader As New IO.StreamReader("file")
  2. Dim Str As String
  3.  
  4. Do
  5.     Str = Reader.ReadLine()
  6.     '...
  7. Loop Until Reader.EndOfStream
  8.  
  9. Reader.Close()



Un hacker non ruba password per definizione, è un uso improprio del termine. Se fossi in te vorrei essere un po' più hacker di così.

PM Quote
Avatar
walker93 (Member)
Expert


Messaggi: 460
Iscritto: 31/01/2010

Segnala al moderatore
Postato alle 23:25
Giovedì, 20/05/2010
ma io adesso leggo già riga per riga...(parola per parola visto che ogni riga è una parola)
solo che col for each è stra-lento
cosi
Codice sorgente - presumibilmente VB.NET

  1. Dim list() As String
  2. list = IO.File.ReadAllLines("percorso\Dizionario.txt", System.Text.Encoding.ASCII)
  3.         For Each par In list
  4.            
  5.                 ris = diz.CheckGrammar(testo & " " & par)'controllo se sta bene
  6.                 If Not ris Then
  7.                     ris = diz.CheckGrammar(par + " " + testo)'controllo inverso
  8.                 End If
  9.                 If ris Then
  10.                     giu.Add(par)
  11.                 End If
  12.          Next


tutto questo è in un background worker per non impallare il programma...

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 14:54
Venerdì, 21/05/2010
Prima di rispondere dovresti leggere le risposte un po' meglio. Tu NON leggi riga per riga, tu leggi TUTTE le righe e DOPO le elabori. Io ti ho detto di elaborarle MENTRE le leggi.

PM Quote
Avatar
Federico_VbNet_Programmer (Normal User)
Expert


Messaggi: 222
Iscritto: 03/04/2010

Segnala al moderatore
Postato alle 16:42
Venerdì, 21/05/2010
Prova con:
Richtextbox1.text = my.computer.filesystem.readalltext("file da leggere")
'vorrei ottenere la seconda riga in un messaggio
messgabox.show(richtextbox1.lines(1)
;)
Dimmi se ti va bene ora

PM Quote
Avatar
walker93 (Member)
Expert


Messaggi: 460
Iscritto: 31/01/2010

Segnala al moderatore
Postato alle 17:07
Venerdì, 21/05/2010
credo che la soluzione postata da totem sia la migliore

con il tuo metodo userei ancora un for each

for each linea in richtextbox1.lines
'.......
next

oppure un for

for i=0 to richtextbox1.lines.count - 1
par=richtextbox1.lines(i)
'.....
next

PM Quote