|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1081
|
[VB6]Agenda telefonica con file sequenziale
Avrei da sottoporre alla vostra attenzione alcune cose che non riesco a risolvere.
Ho un file sequenziale in cui memorizzo i vari campi del record: persona.nominativo, persona.indirizzo e così via. Vorrei effettuare la visualizzazione per lettera. Ho pensato quindi di confrontare la lettera che mi interessa visualizzare con la prima lettera del campo record persona.nominativo. Poi non appena si verifica la condizione, valorizzo un record ausiliario omogeneo e memorizzo in un file di supporto. Per provare ho utilizzato la lettera a inserendo il seguente codice: Codice:
Do While Not EOF(1) Input #1, persona.nominativo car = Left(persona.nominativo, 1) If (car = "A") Or (car = "a") Then cont = cont + 1 Input #1, persona.id aux.id = persona.id Input #1, persona.nominativo aux.nominativo = persona.nominativo Input #1, persona.indirizzo aux.indirizzo = persona.indirizzo Input #1, persona.datanascita aux.datanascita = persona.datanascita Input #1, persona.telefono aux.telefono = persona.telefono Input #1, persona.città aux.città = persona.città Input #1, persona.cap aux.cap = persona.cap supportoscrivi Write #2, aux.id Write #2, aux.nominativo Write #2, aux.indirizzo Write #2, aux.datanascita Write #2, aux.telefono Write #2, aux.città Write #2, aux.cap Close #2 End If Loop Close #1 nb2: a supportoscrivi corrisponde una sub, dichiarata nel modulo, che provvede ad aprire in append un file di supporto. spero che il codice sia abbastanza chiaro e che mi sia spiegato in altrettanta maniera. se volete posso allegare il progetto. grazie dell'attenzione.
__________________
Ho felicemente trattato con: Raziel1984,]Rik`[,fab77,pralina,vin81,drago,Qrama,Hangar18,gallo85,kikbond |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Io nn ho capito molto bene... vuoi visualizzare in ordina alfabetico i nominativi?
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Sep 2004
Messaggi: 80
|
se mi alleghi (o mi invio in privato ) il progetto posso provare
ad aiutarti....(spero!!) |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1081
|
Quote:
diciamo che dovrei fare diversi ordinamenti:; *in ordine alfabetico *per lettera (questo ordinamento è associato a una scroll bar che, ad ogni pressione mi deve visualizzare le lettere successive e precedenti) *per data di nascita *per indirizzo *per città ma basta che riesco a farne uno e poi di riuscire a fare anche gli altri abbastanza agevolmente.
__________________
Ho felicemente trattato con: Raziel1984,]Rik`[,fab77,pralina,vin81,drago,Qrama,Hangar18,gallo85,kikbond |
|
![]() |
![]() |
![]() |
#5 |
Junior Member
Iscritto dal: Sep 2004
Città: Verona
Messaggi: 9
|
Ciao, forse posso aiutarti, ma prima vediamo se ho capito bene, i vari ordinamenti li vuoi per forza su file o ti basta solo visualizzarli?
![]()
__________________
Mitch |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Bhe ma per fare gli ordinamenti nn si lavora mai sul file, è troppo lungo!!
Devi leggere tutto il tuo record e memorizzarlo dentro ad un vettore di record e da li in poi elabori tutto con i vari ordinamenti, per esempio il bouble sort!
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1081
|
Quote:
grazie della risposta.
__________________
Ho felicemente trattato con: Raziel1984,]Rik`[,fab77,pralina,vin81,drago,Qrama,Hangar18,gallo85,kikbond |
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1081
|
Quote:
Non vorrei che però fosse l'algoritmo dello scambio dei valori usando una qualsiasi variabile ausiliaria. esempio: a=7; b=5 e voglio ottenere a=5 e b=7: Codice:
aux=a a=b b=aux
__________________
Ho felicemente trattato con: Raziel1984,]Rik`[,fab77,pralina,vin81,drago,Qrama,Hangar18,gallo85,kikbond |
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Bhe si certo, però devi metterlo dentro due cicli annidati!!
Ma studi informatica alle superiori? com'è possibile che nn aveta fatto il bouble sort!!
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein |
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1081
|
Quote:
magari il bubble sort l'abbiamo fatto (appunto quell'algoritmo dello scambio) ma non ci è mai stato definito come tale.....
__________________
Ho felicemente trattato con: Raziel1984,]Rik`[,fab77,pralina,vin81,drago,Qrama,Hangar18,gallo85,kikbond |
|
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
No, lo scambio è lo scambio, il bubble sort è proprio un ordinamento di vettori!!
Teoria: http://www.redangel.it/articoli/articolo.asp?art=12&l=2
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1081
|
ho capito.grazie del link
![]() comunque allego il progetto.
__________________
Ho felicemente trattato con: Raziel1984,]Rik`[,fab77,pralina,vin81,drago,Qrama,Hangar18,gallo85,kikbond |
![]() |
![]() |
![]() |
#13 |
Junior Member
Iscritto dal: Sep 2004
Città: Verona
Messaggi: 9
|
sono arrivato tardi, ti hanno gia' proposto una soluzione piu' che valida
buon lavoro ![]()
__________________
Mitch |
![]() |
![]() |
![]() |
#14 | |
Senior Member
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1081
|
Quote:
ma trattandosi di record, non mi conviene ordinare su un record ausiliario e scrivere su un file di supporto dal quale andare a leggere in fase di visualizzazione? ho quindi proceduto così Codice:
Do While Not EOF(1) For i = 1 To ((campi / 7) - 1) Input #1, persona.nominativo Input #1, persona.indirizzo Input #1, persona.datanascita Input #1, persona.telefono Input #1, persona.città Input #1, persona.cap r1.nominativo = persona.nominativo r1.indirizzo = persona.indirizzo r1.datanascita = persona.datanascita r1.telefono = persona.telefono r1.città = persona.città r1.cap = persona.cap For j = (i + 1) To (campi / 7) Input #1, persona.nominativo Input #1, persona.indirizzo Input #1, persona.datanascita Input #1, persona.telefono Input #1, persona.città Input #1, persona.cap r2.nominativo = persona.nominativo r2.indirizzo = persona.indirizzo r2.datanascita = persona.datanascita r2.telefono = persona.telefono r2.città = persona.città r2.cap = persona.cap If (r1.nominativo > r2.nominativo) Then aux.nominativo = r1.nominativo aux.nominativo = r1.nominativo aux.indirizzo = r1.indirizzo aux.datanascita = r1.datanascita aux.telefono = r1.telefono aux.città = r1.città aux.cap = r1.cap r1.nominativo = r2.nominativo r1.indirizzo = r2.indirizzo r1.datanascita = r2.datanascita r1.telefono = r2.telefono r1.città = r2.città r1.cap = r2.cap r2.nominativo = aux.nominativo r2.indirizzo = aux.indirizzo r2.datanascita = aux.datanascita r2.telefono = aux.telefono r2.città = aux.città r2.cap = aux.cap End If dove campi/7 è il numero di record presenti nel file. Potevo usare la formula lunghezzafile/lunghezza record ma non ci ho pensato ![]() ![]() p.s. ![]() ![]()
__________________
Ho felicemente trattato con: Raziel1984,]Rik`[,fab77,pralina,vin81,drago,Qrama,Hangar18,gallo85,kikbond |
|
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1081
|
up
__________________
Ho felicemente trattato con: Raziel1984,]Rik`[,fab77,pralina,vin81,drago,Qrama,Hangar18,gallo85,kikbond |
![]() |
![]() |
![]() |
#16 |
Junior Member
Iscritto dal: Sep 2004
Città: Verona
Messaggi: 9
|
Beh! l'ordinamento pare giusto, ma credo che si possa ottimizzare di molto senza scrivere i dati ordinati in un file., utlizzando degli array come è già stato detto.
![]()
__________________
Mitch |
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1081
|
penso mi convenga memorizzare i dati in una matrice, visto che ci sono più campi per ogni record....
che ne pensate?
__________________
Ho felicemente trattato con: Raziel1984,]Rik`[,fab77,pralina,vin81,drago,Qrama,Hangar18,gallo85,kikbond |
![]() |
![]() |
![]() |
#18 |
Junior Member
Iscritto dal: Sep 2004
Città: Verona
Messaggi: 9
|
beh se fai un array di record ti eviti la gestione della matrice e hai lo stesso tutti i dati
![]() Ma la scelta di file è proprio obbligata o l'hai deciso tu? altrimenti potresti usare un database anche access e tutto diventerebbe molto più facile ![]()
__________________
Mitch |
![]() |
![]() |
![]() |
#19 |
Senior Member
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1081
|
è proprio obbligato l'uso dei file, e per di più sequenziale.
Che io sappia, con questo tipo di file, non puoi leggere tutto l'intero record, ma devi farlo campo per campo. Ecco perchè ho detto che la matrice di dati sarebbe meglio rispetto ad un vettore.
__________________
Ho felicemente trattato con: Raziel1984,]Rik`[,fab77,pralina,vin81,drago,Qrama,Hangar18,gallo85,kikbond |
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1081
|
sono riuscito finalmente a risolvere mediante l'uso di una doppia matrice:
*in una ho memorizzato i campi del record man mano che li leggevo dal file sequenziale *l'altra l'ho usata di supporto in fase di scambio record, in quello che poi è stato il vero è proprio ordinamento. Questo primo problema è stato finalmente risolto. In caso di novità scriverò sempre in questo post! grazie a tutti per l'aiuto e le idee proposte.
__________________
Ho felicemente trattato con: Raziel1984,]Rik`[,fab77,pralina,vin81,drago,Qrama,Hangar18,gallo85,kikbond |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:25.