PDA

View Full Version : [vb6] Cercare parola in una txtbox...


ASyd
13-10-2003, 00:04
Vorrei cercare un termine all'interno di una text box (magari una rich text box, che possiede il metodo "find") impostando una parola di inizio ricerca e una di fine, memorizzando poi ciò che ci sta in mezzo.

Esempio: "Ieri ho mangiato una mela, era buona." (stringa all'interno della txtbox).

Parola1: "mangiato"
Parola2: ","
Risultato: " una mela"


Spero di essere stato chiaro :rolleyes:

ciao.

matpez
13-10-2003, 01:46
ti conviene nn utilizzare il metodo Find, almeno la Rich lo ha però magari se tu lo fai standard per tutti e lo metti sotto forma di funzione, se gli passi la stringa e gli altri paraetri che ti interessano viene una cosa carina ed utilizzabile per qlc cosa abbia un testo...cmq guarda se capisci questa routine:


Private Sub Form_Load()

Dim nLen(2) As Integer
Dim sStr(2) As String

sStr(1) = "mangiato"
sStr(2) = ","

nLen(1) = InStr(Text1, sStr(1))

If nLen(1) > 0 Then
nLen(1) = nLen(1) + Len(sStr(1))
nLen(2) = InStr(nLen(1), Text1, sStr(2))
MsgBox Mid(Text1, nLen(1), nLen(2) - nLen(1))
End If

End Sub


Text1=contiene il tuo testo nell'esempio
sStr(1)=Prima parola cercata
sStr(2)=Seconda parola cercata
nLen(1)=Contiene l'indice della parola cercata
nLen(2)=Contiene l'indice di fine ricerca

ASyd
13-10-2003, 17:45
Grazie, funziona.

Vorrei fare in modo che mi cercasse tutte le parole (comprese tra altre due stabilite) presenti nella mia text e che scrivesse queste in file di testo.
Per ora ho fatto questo

Private Sub Command2_Click()
Dim parola As String
Open App.Path & "\parolatrovata.txt" For Output As #1

Dim nLen(2) As Integer
Dim sStr(2) As String

sStr(1) = "stringa iniziale"
sStr(2) = "stringa finale"

nLen(1) = InStr(rtb1, sStr(1))

If nLen(1) > 0 Then
nLen(1) = nLen(1) + Len(sStr(1))
nLen(2) = InStr(nLen(1), rtb1, sStr(2))
parola = Mid(rtb1, nLen(1), nLen(2) - nLen(1))
Write #1, parola
Close
End If
End Sub


Sostanzialmente la prima parola trovata viene scritta nel file.

E' possibile realizzare quanto detto sopra?

tnx

matpez
13-10-2003, 18:44
Sarà la febbre...ma sai che nn ho capito che chiedi :(

ASyd
13-10-2003, 20:57
Usando il codice che mi hai suggerito il programma cerca e trova la prima parola che soddisfa i parmetri da noi dettati (nell'esempio precendente era "una mela", avendo usato i paramentri "mangiato" e ",".)

Anche se la nostra text contiene altre parole che soddisfano i parametri, il programma si ferma dopo aver trovato la prima.

Vorrei che una volta trovata la prima parola, il programma non si fermasse ma continuasse a cercare un eventuale seconda, terza ecc...

ora è + chiaro?

:sperem:

a2000
13-10-2003, 21:37
Sub ppp()

a$ = "tua sorella, nerchia, tuanerchia_//&%$£ pinca tua kjhkjh nerchia jhghg tua_1234_nerchia"
b1$ = "tua"
b2$ = "nerchia"

bb$ = "": ipos = 1
Do
b$ = f_Mid$(a$, b1$, b2$, ipos, ipos)
bb$ = bb$ & b$
Loop Until ipos = 0


End Sub


Function f_Mid$(a$, b1$, b2$, ipos0, ipos2)

ipos1 = InStr(ipos0, a$, b1$)
If ipos1 > 0 Then
ipos1 = ipos1 + Len(b1$)
ipos2 = InStr(ipos1, a$, b2$)
If ipos2 > 0 Then
f_Mid$ = Mid$(a$, ipos1, ipos2 - ipos1)
End If
Else
ipos2 = 0
End If


End Function

ASyd
14-10-2003, 10:54
Il mio problema non è il ciclo loop.

Non riesco a fare in modo che dopo avermi cercato la prima parola nel testo, al secondo giro di loop mi ignori la prima parola (già trovata) e passi alla seconda (poi al terzo giro alla terza, al quarto alla quarta ecc...).

Dal codice postato da a2000 non riesco a capire come fare ciò.

a2000
14-10-2003, 11:23
Quasi Originariamente inviato da ASyd

Il codice postato da a2000 riesce a fare in modo che dopo avere cercato la prima parola nel testo, al secondo giro di loop ignora la prima parola (già trovata) e passa alla seconda (poi al terzo giro alla terza, al quarto alla quarta ecc...).

Infatti:


a$ = "tua sorella, nerchia, tuanerchia_//&%$£ pinca tua kjhkjh nerchia jhghg tua_1234_nerchia"
b1$ = "tua"
b2$ = "nerchia"

bb$ = " sorella, kjhkjh _1234_"

maxithron
14-10-2003, 11:49
[OT]

Bentornato a2000!!

a2000
14-10-2003, 12:08
Ciao maxisborone

[/OT]

maxithron
14-10-2003, 12:21
very [OT]


quanto è durato l'internamento? :asd: :asd:

a2000
14-10-2003, 12:39
un T[OT] ... off., due T[OT] on.


http://www.insiemeweb.com/gif/trasporti/tras015.gif