Newsgroup: it.comp.www.asp
Titolo: cercare parole in un file

Ciao a tutti!!
Ho un problemino che non riesco a risolvere....
Devo fare una pagina ASP che mi va a cercare una parola (diciamo 'pippo')
all'interno di un file TXT che si trova nella stessa cartella della pagina
ASP.
Premesso che sono riuscito ad aprire il file TXT e sono riuscito a leggerlo
per cercare le parole 'pippo' - NON RIESCO a far fermare il ciclo Do-Loop,
in pratica lo script continua a cercare la parola anche quando arriva in
fondo al file, cioč ricomincia dall'inizio e non si ferma piů!!!
Quale condizione devo mettere in Do-Loop per fare in modo che quando č stato
raggiunto la fine del file txt il ciclo si arresti?
Grazie per qualsiasi suggerimento!
Ciao!
Davide

 Grazie per qualsiasi suggerimento!
Dipende cosa fai dentro il do-loop e poi cosa usi per aprire il file...
Io ad esempio userei l'FSO (file system object), fatto questo metterei il
file dentro una variabile e con un semplice instr() saprei se c'e'
(risultato >0 avendo cosi' anche dove si trova il primo) o se non c'e' (
=0 ), l'instr() ha anche una bella proprieta' che ti permette di cercare in
modalita' binaria (case sensitive in caso di testo) o in modalita' testuale
(case insensitive).
Inoltre, a parte tutto questo, l'FSO ha anche funzioni di seek per le
ricerche nei file, se non ricordo male... un'occhiata all'msdn chiarira'
tutto ;)
Ciao! ;^)=
-- 
RedFoxy
A fox around web
Power at fox for a yiffing world!
La legge del marketing:
Non migliorare il prodotto, cerca un cliente piu' scemo.

Ecco lo script che fatto io... cosa posso mettere dopo il Do?
strFile = Server.MapPath("pippo.txt")
intTipo = 1 'lettura
'Creo l'oggetto
Set FileObject = Server.CreateObject("Scripting.FileSystemObject")
'Apro il file
Set InStream = FileObject.OpenTextFile(strFile, intTipo, true)
'Leggo tutte le linee
StrLinea = InStream.ReadAll()
'Cerco la parola Giuseppe
Do While ???????? <-- Cosa metto qui?
  'Estrae la parola
  Posizione = Instr(POSini, StrLinea, "giuseppe")
  Parola = Mid(StrLinea , Posizione, 10)
  Response.write "<BR>" & Parola
  POSini = POSini+10
Loop
Response.write "<P>Fine ricerca"
'Libero le risorse
InSTream.Close
Set InStream = Nothing
Set FileObject = Nothing

 Loop
Dovrebbe bastare un semplicissimo Do While Posizione=0
Ricordati di mettere prima del ciclo un Posizione=1 se no uscira' subito :)
Posizione sara' uguiale a 0 quando l'instr() non trovera' piu' la parola,
oltra a Posizione=0 come condizione, io aggiungerei le seguenti:
Posizione=0 OR POSini=>Len(StrLinea) OR POSini>Len(StrLinea)+10
In pratica significano che se almeno una di queste condizioni si avvera, il
ciclo finisce:
Posizione=0  --> l'instr() NON trova piu' la parola da cercare (ti consiglio
di fare una ricerca TEXT mettendo ,1 dopo la parola da cercare se no sei
case sensitive!)
POSini=>Len(StrLinea)  --> Che l'ultima posizione immaginata (POSini =
POSini+10) indichi o l'ultimo byte o sia oltre la lunghezza massima della
variabile
POSini>Len(StrLinea)+10 --> Che la prossima posizione (non quella che terra'
conto ora) immaginata sia al di fuori della lunghezza della variabile
Ti consiglio di testare bene il tutto, sono andato un po' a memoria +
ragionamento... Potrei aver toppato qualcosina... Forse! ;)
Ciao ;^)=
