totò93 (Normal User)
Newbie
Messaggi: 9
Iscritto: 03/09/2008
|
Allora, io ho un file txt che contiene dei dati, essi sono perfettamente strutturati es:
PINCO PALLINO; 5678
TAL DEI TALI; 8769
PASCAL; 1236
ecc. Avrei bisogno che letta una stringa tipo 'TAL DEI TALI' lui andasse a cercare quest'ultima nel file e prelevasse il numero dopo il punto e virgola.
Grazie mille!!
|
|
John (Ex-Member)
Pro
Messaggi: 191
Iscritto: 18/11/2007
|
scusa: il numero è sempre 4 cifre??
|
|
totò93 (Normal User)
Newbie
Messaggi: 9
Iscritto: 03/09/2008
|
Ciao! Si cioè in realtà non sono 4 numeri bensì una lettera e tre numeri. Ad ogni modo i caratteri sono sempre 4.
|
|
John (Ex-Member)
Pro
Messaggi: 191
Iscritto: 18/11/2007
|
ok. allora provo a buttare giù qualcosa stasera...
|
|
John (Ex-Member)
Pro
Messaggi: 191
Iscritto: 18/11/2007
|
Ecco il programma che potrebbe risolvere il tuo problema:
Legge riga per riga il file e controlla se quello scritto prima del ";" corrisponde con quello che stai cercando, se è così copia il codice.
Codice sorgente - presumibilmente Delphi |
program cerca_codice; uses crt; var testo:text; query,letto,codice,filename: string; k,i :integer; uguali,trovato: boolean; begin textcolor(lightgreen); textbackground(blue); clrscr; Write('Nome file da aprire? [comprendere estensione] '); readln(filename); assign(testo,filename); reset(testo); write('Elemento di cui cercare il codice? [case SeNsItIvE] '); readln(query); trovato:=false; clrscr; while ((trovato=false) and not(eof(testo))) do {finchè non è stato trovato l'elemento della ricerca o è finito il file} begin {leggo una riga dal file} readln(testo,letto); uguali:=true; k:=1; while not(letto[k]=';') do begin if not(query[k]=letto[k]) then {Il primo carattere diverso trovato prima del ; rende l'uguaglianza tra le stringhe FALSA} begin uguali:=false; break; {esce dal while} end; k:=k+1; end; if uguali then {se tutti i caratteri prima del ; erano uguali, cerchiamo il codice...} begin k:=k+1; {salto lo spazio} for i:=k to k+4 do codice:=codice+letto[i]; writeln('Codice di ',query,': ',codice); trovato:=true; end else trovato:=false; end; if (trovato=false) then writeln('Query non trovata nel file ',filename); readln; end.
|
Occhio che è case sensitive (se cerchi "abc" e nel file hai salvato il dato come "Abc", ti dirà che non lo trova!!) e che non ho previsto l'eventualità che il file che si tenta di aprire non esista, in tal caso il programma crasha....
Hope you'll find it useful!!
|
|
totò93 (Normal User)
Newbie
Messaggi: 9
Iscritto: 03/09/2008
|
Grazie mille!!!! Adesso poi lo provo e dico se c'è qualche problema!
Ultima modifica effettuata da totò93 il 07/09/2008 alle 17:24 |
|
totò93 (Normal User)
Newbie
Messaggi: 9
Iscritto: 03/09/2008
|
Guarda sei il mio mito!!! Grazieeeeeeeeee
|
|
John (Ex-Member)
Pro
Messaggi: 191
Iscritto: 18/11/2007
|
Postato originariamente da totò93:
Guarda sei il mio mito!!! Grazieeeeeeeeee |
Per così poco??
So fare di meglio....
No cmq io mi diverto molto a fare questi programmi.... molta logica e pochi semplici comandi....
Alla prossima!! |
|
totò93 (Normal User)
Newbie
Messaggi: 9
Iscritto: 03/09/2008
|
Purtroppo i collegamenti con i file esterni in pascal non li so trattare bene... forse anche perché non ho ancora trovato una guida appropriata... Ed ecco però che anche una piccola cosa per te, per me è un'ottima occasione didattica per imparare e in questo caso (anche se ne sono un po' dispiaciuto) copiare.
Ciao e grazie ancora!
|
|