Oppure

Loading
09/05/11 11:25
fusebyte
Dovrei creare 3 textbox
Nella prima devo inserire un elenco di nomi composti ,es:
Odissea nello spazio 2001 fantascienza x264 AC3 ITA
Jack lo Squartatore Horror x264 AC3 ITA

La seconda textbox deve servire per effettuare una ricerca sul contenuto della prima textbox, es: inserisco una serie di nomi
spazio
2001
pappagallo
etc...

Nella terza textbox vorrei venissero stampati i risultati

Quindi inseriti i dati il programma dovrebbe prendere i nomi della seconda textbox uno ad uno e cercare nella prima textbox la parola desiderata e se la trova stampare l'intera riga della textbox 1 nella textbox 3.

Ho cercato un po' prima di postare e credo qualcosa gia' esista in VB6,non so,
sicuramente per colpa mia non riesco a trovare niente del genere

Un ringraziameto anticipato per qualunque aiuto mi venga dato.
Grazie
aaa
09/05/11 14:50
fusebyte
Con questo apro il file contenente i dati da ricercare e li carico nella text1.text

Private Sub cmdDatiFile_Click()
Open App.Path & "\Dvdriplink.txt" For Input As #4
'Open App.Path & "\Dati Ricerca.txt" For Output As #7
Do Until EOF(4)
Line Input #4, rigaletta
'Print #7, rigaletta
Text1.Text = Text1.Text & rigaletta & vbCrLf
Loop
Close #4
'Close #7
End Sub


Quindi il caricamento dei dati da ricercare è fatto
anche se preferirei caricare solo una parte della stringa di ogni linea.es:
Amityville Horror (2005) .avi - DVDRip - ITA - [Mu] - Iceblue - Visto: 2691 - Commenti: 1
Amityville Horror (2005).avi (DVD RIP AC3 - ITA) - Dr.BoOm - Visto: 1534 - Commenti: 0

basterebbe mi caricasse
Amityville Horror (2005) .avi - DVDRip - ITA
Amityville Horror (2005).avi (DVD RIP AC3 - ITA

tralasciando il resto
L'ultimo parola di solito è ITA
Come posso fargli caricare la stringa fino a dove voglio io ?

Fatto questo,devo inserire nell text2 le voci per la ricerca da visualizzare nella text3 e salvare in un terzo file di OUTPUT

Tk's
Ultima modifica effettuata da fusebyte 09/05/11 14:51
aaa
09/05/11 22:57
fusebyte
Aggiornamento:
Ho usato 2 listbox per caricare il file con i dati da controllare ed il secondo file
con i dati che devono servire come imput di ricerca.
tutto inserito nel FORMLOAD in modo che si caricano all' avvio.

Ora mi rimane di fare questo:

LINEA 1 di LISTBOX 2 controlla tutte le linee della LISTBOX 1
LINEA 2 di LISTBOX 2 controlla tutte le linee della LISTBOX 1
e cosi via fino a EOF ( end of file).
Se c'è riscontro STAMPA in LISTBOX 3 o meglio TEXTBOX 3 ?
Qualcuno mi puo' fare un esempio base semplice ma funzionante, poi me lo sistemo io.
Grazie

Questo è il codice usato fino ad adesso

Private Sub cmdREFRESHDatiFile_Click()
Call LoadFileInList(List1, App.Path & "\Dvdriplink.txt")
End Sub
Private Sub cmdDatiPerRicerca_Click()
Call LoadFileInList(List2, App.Path & "\ENG.txt")
End Sub

Private Sub LoadFileInList(thelist As ListBox, ByVal file As String)
Dim data As String
Open App.Path & "\Dvdriplink.txt" For Input As #1
While Not EOF(1)
[b]If maxlenght < 10 Then << qui vorrei porre un limite alla stringa in modo che se contiene meno di N caratteri non venga stampata,ma cosa metto dopo THEN ?[/b]
Input #1, data
thelist.AddItem data
Wend
End Sub

Private Sub LoadFileInList2(thelist2 As ListBox, ByVal file As String)
Dim data As String
Open App.Path & "\ENG.txt" For Input As #2
While Not EOF(2)
Input #2, data
thelist2.AddItem data
Wend
End Sub

Private Sub Form_Load()
Call LoadFileInList(List1, App.Path & "\Dvdriplink.txt")
Call LoadFileInList2(List2, App.Path & "\ENG.txt")
End Sub
Ultima modifica effettuata da fusebyte 09/05/11 23:03
aaa
11/05/11 8:06
poeo85
cioò che ti serve è una lavorazione di stringhe da quel che ho capito

guardati le funzioni

Instr() -> che fa la ricerca

Mid() -> ti fa una selezione di caratteri

quello che ti rimane da fare non è altro che due cicli for sulle liste visto che i dati li hai già caricati

for i = 0 to lista2.listcount -1
     for j = 0 to lista1.listcount -1
            if instr(1,lista2.list(i),lista1.list(i)) > 0 then
                  'trovato
            end if
     next j
next i
aaa
11/05/11 11:09
fusebyte
Prima di tutto, grazie per l'aiuto, stavo perdendo le speranze :-)
Ho fatto cosi':
    for i = 0 to list2.listcount -1
         for j = 0 to list1.listcount -1
                if instr(1,list2.list(i),list1.list(i)) > 0 then
                     Text1.Text=  List1.list(i)
                end if
         next j
    next i


Facendo una prova con nomi semplici
LIST1 = casa sole mare luna
LIST2 = ramo ago sole tipo vaso

mi stampa nella Text1.Text la parole sole

e tutto sembra funzionare.

Ma aggiungendo nella LIST2 la parola luna cosi:
LIST1 = casa sole mare luna
LIST2 = ramo ago sole tipo vaso luna

non stampa piu' niente,neanche sole.

Perche' succede questo?


E altro problema, nelle liste ci sono solo nomi composti.
Come dico alla LIST2 di prendere sempre la terza parola per fare la ricerca?
( il mid in questo caso è inefficace perche' la terza parola di ogni riga sicuramente
varia di posizione e lunghezza)

Ciao Grazie


Ultima modifica effettuata da fusebyte 11/05/11 11:22
aaa
11/05/11 14:43
poeo85
E altro problema, nelle liste ci sono solo nomi composti.
Come dico alla LIST2 di prendere sempre la terza parola per fare la ricerca?
( il mid in questo caso è inefficace perche' la terza parola di ogni riga sicuramente
varia di posizione e lunghezza)


puoi contare gli spazi no? dopo 2 hai la terza parola...

poi posti un pezzo di codice maggiore mi è più facile capire la situazione o magari uno screen del programma...
List1.AddItem "casa sole mare luna"
List2.AddItem "ramo"
List2.AddItem "ago"
List2.AddItem "sole"
List2.AddItem "tipo"
List2.AddItem "vaso"
List2.AddItem "luna"


    For i = 0 To List2.ListCount - 1
         For j = 0 To List1.ListCount - 1
                If InStr(1, List1.List(j), List2.List(i)) > 0 Then
                     Text1.Text = Text1.Text & List2.List(i)
                End If
         Next j
    Next i

prova questo codice su un nuovo form e noterai i tuoi errori
aaa
11/05/11 21:03
fusebyte
Con questo codice sembra che funziona:


Private Sub LoadFileInList(thelist As ListBox, ByVal file As String)
Dim data As String
Open App.Path & "\Dvdriplink.txt" For Input As #1
While Not EOF(1)
Input #1, data
List1.AddItem data
Wend
End Sub

Private Sub LoadFileInList2(thelist2 As ListBox, ByVal file As String)
Dim data As String
Open App.Path & "\ENG.txt" For Input As #2
While Not EOF(2)
Input #2, data
List2.AddItem data
Wend
End Sub

Private Sub Form_Load()
Call LoadFileInList(List1, App.Path & "\Dvdriplink.txt")
Call LoadFileInList2(List2, App.Path & "\ENG.txt")
End Sub

Private Sub cmdRicerca_click()

For i = 0 To List2.ListCount - 1
 For j = 0 To List1.ListCount - 1
      If InStr(1, List1.List(j), List2.List(i)) > 0 Then
           Text1.Text = Text1.Text & List2.List(i) & vbCrLf
        End If
         Next j
      Next i
    End Sub

Private Sub cmdClear_click()
Text1.Text = ""
End Sub



Contenuto dei 2 file TXT caricati nelle 2 LISTBOX

dvdriplink.txt > LIST1
casa
sole
mare
luna
naso
albero

eng.txt > LIST2
ago
sole
tipo
vaso
luna
bastone
naso

risultato
sole
luna
naso

quindi fino a qui ok.


Il problema è sui veri TXT da controllare

alcune rige del txt dvdriplink.txt > LIST1

13dici a tavola (2004) [DVDRip AC3] [FileSonic]
14 Kilometros (2007) DvdRip [By.Caly-AsTrA](Fs)
14 anni vergine DVDRip [RS-MU]
1408 [mu]
16 years of alcool [MU,RS]
17 Again - Ritorno al liceo (2009)[BDRip.XviD][MU/RS]
2 single a nozze [Commedia][DVDRip][RS]


alcune rige del txt eng.txt > LIST2
Apocalypto ITA_track23
Frozen.2010.BluRay.720p.DTS.x264-CHD ENG
Harry Brown.2009.German.DTS.720p.BluRay.x264-SoW
Locked Down 2010 01_38_50 1280x720 23976 x264 rus


Secondo te come posso impostare la ricerca oppure formattare in qualche modo i TXT per facilitare in seguito la ricerca ?

Grazie,Ciao


Ti allego lo ZIP del progetto,credo sia piu' facile da controllare


Ultima modifica effettuata da fusebyte 11/05/11 21:12
aaa
12/05/11 7:22
poeo85
Private Sub cmdRicerca_click()

    Text1.Text = ""
    Screen.MousePointer = vbHourglass
    For J = 0 To List1.ListCount - 1
        For i = 0 To List2.ListCount - 1
            If InStr(1, List1.List(J), List2.List(i)) > 0 Then
                 Text1.Text = Text1.Text & List1.List(J)
            End If
        Next i
        List1.ListIndex = J
    Next J
    Screen.MousePointer = vbDefault
    
End Sub


secondo me a sto punto dovresti o guardarti i file random per cui file con una certa formattazione o valutare i database.
non so quali siano le tue necessità ma con i file random stabilisci dei campi per esempio il titolo lungo 50 caratteri , info1 lunga 10 info2 lunga 10 ecc...
(sono numeri di caratteri indicativi) per farti capire...
ma secondo me ti conviene farti un dabase più o meno serio dipende dal tuo scopo.
aaa