View Full Version : [VB6] Ordinare Listbox
Allora, premetto che ho letto una cifra di pagine per cercare la soluzione a questo problema, ma vi giuro che non riesco a venirne a capo! :muro:
In un programma che sto facendo mi servirebbe avere una specie di classifica che aggiorno manualmente.
In pratica io ho un file .txt con inseriti dei numeri (verticalmente) e vorrei metterli in ordine decrescente in una listbox.
Il problema è che (a parte il fatto di metterli in ordine decrescente invece che crescente) il programma non ordina proprio numericamente, ma bensì in base al primo numero, per esempio se ho 1 2 12 l'ordine sarà 1 12 2 :doh:
So che esiste la proprietà sorted ma non funziona come vorrei..Qualcuno riesce ad aiutarmi?
ciao, scusa ma non capisco come faccia a ordinarli in quel modo :confused:
il funzionamento è lo stesso di quando ordini dei semplici numeri in un vettore... quindi ti basta cercare degli esempi di alcuni metodi di ordinazione (come quick sort, bouble sort, selezione, inserzione, ecc.)
il problema che ti da è da ricercare nel codice che hai scritto... quindi prova a postarlo e vediamo :) ciao
Sinceramente ce l'ho fatta :D
Ecco il codice..
'Leggo dal file .txt dove salvo i numeri
Dim file As Integer
Dim line As String
file = FreeFile()
On Error Resume Next
Open App.Path & "\Save_Fish.txt" For Input As #file
If Err Then Exit Sub
Do While Not EOF(file)
Line Input #file, line
List1.AddItem line
Loop
Close #file
'li ordino in modo crescente
For i = 0 To List1.ListCount - 1
List1.List(i) = Format$(Val(List1.List(i))) & Mid$(List1.List(i), InStr(List1.List(i), " "))
Next i
Quest'ultimo codice l'ho trovato, non l'ho scritto io...
Il problema adesso è metterli in modo decrescente, appunto perchè è una classifica (chi ha più soldi va messo in prima posizione tanto per capirci)..
Sinceramente ce l'ho fatta :D
buon per te :D ciao!
Sinceramente ce l'ho fatta :D
Ecco il codice..
'Leggo dal file .txt dove salvo i numeri
Dim file As Integer
Dim line As String
file = FreeFile()
On Error Resume Next
Open App.Path & "\Save_Fish.txt" For Input As #file
If Err Then Exit Sub
Do While Not EOF(file)
Line Input #file, line
List1.AddItem line
Loop
Close #file
'li ordino in modo crescente
For i = 0 To List1.ListCount - 1
List1.List(i) = Format$(Val(List1.List(i))) & Mid$(List1.List(i), InStr(List1.List(i), " "))
Next i
Quest'ultimo codice l'ho trovato, non l'ho scritto io...
Il problema adesso è metterli in modo decrescente, appunto perchè è una classifica (chi ha più soldi va messo in prima posizione tanto per capirci)..
For i = 0 To List1.ListCount - 1
List1.List(i) = Format$(Val(List1.List(i))) & Mid$(List1.List(i), InStr(List1.List(i), " "))
Next i
che significa questo sopra... li ordino in modo crescente
non mi pare un ordinamento.
una volta superato Close #file
li ordini in modo crescente con un bubble sort e sei a posto ricordandoti di lasciare la proprietà sort della listbox = false
Hai ragione, ho preso un abbaglio e il codice che mi hai fatto notare è inutile.. Ho fatto una prova con dei numeri che erano ordinati da soli.. Il problema è sempre lo stesso.. i numeri non li ordina in modo crescente, ma in base alla prima cifra..
se i numeri sono 1 12 26 3 l'ordine sarà appunto 1 12 26 3
e non 1 3 12 26 !!
Cosa intendi per "bubble sort", dovete scusarmi ma conosco solo le basi del vb6.. :doh:
Hai ragione, ho preso un abbaglio e il codice che mi hai fatto notare è inutile.. Ho fatto una prova con dei numeri che erano ordinati da soli.. Il problema è sempre lo stesso.. i numeri non li ordina in modo crescente, ma in base alla prima cifra..
se i numeri sono 1 12 26 3 l'ordine sarà appunto 1 12 26 3
e non 1 3 12 26 !!
Cosa intendi per "bubble sort", dovete scusarmi ma conosco solo le basi del vb6.. :doh:
aspetta che ti posto quello che ti serve...;)
ma metti la proprietà sort della list = false intanto
aspè...
Già fatto :D
Te ne sarei grato! :D :D
Già fatto :D
Te ne sarei grato! :D :D
Dim file As Integer
Dim line As String
Dim numeri(1000), nTemp(1000), c,cc, b As Integer
dim stringa(1000), nStringaTemp(1000) As String
file = FreeFile()
On Error Resume Next
Open App.path & "\Save_Fish.txt" For Input As #file
If Err Then Exit Sub
c = 0
Do While Not EOF(file)
Line Input #file, line
List1.AddItem line
numero(c)= mettici il numero
stringa(c)=mettici la stringa ma devi farlo tu io non so come è fatta la linea letta
c = c + 1 'contatore indice
Loop
Close #file
stop 'controlla la list creata
For t = 0 To c - 1
nTemp(t) = numeri(t) 'passa i numeri in una matrice temporanea
nStringaTemp(t)=stringa(c)
Next t
'studiati questo sotto togliendo i commenti agli stop
For q = 0 To c - 1
b = nTemp(q)
str = nStringaTemp(q)
'stop
For s = q To c - 1
If nTemp(s) >= b Then b = nTemp(s): cc = s: str=nStringaTemp(s) 'ordinamento crescente
'If nTemp(s) < b Then b = nTemp(s): cc = s 'ordinamento decrescente
Next s
nTemp(cc) = nTemp(q)
nTemp(q) = b
nStringaTemp(c) = nStringaTemp(q)
nStringaTemp(q) = str
'stop
Next q
List1.Clear
For i = 0 To c - 1
List1.AddItem (nTemp(i) + " " + nStringaTemp(i))
Next i
stop 'controlla se tutto è okay
Innanzitutto grazie mille!!
Allora..ci sono due problemi.. il primo è che nel mio file .txt ho salvati prima i numeri (che sarebbero i soldi) e sulla stessa riga la persona che li possiede e dal tuo programma resta solo il numero.. non so se sia dovuto magari a questo: "numeri(c) = Val(line) 'tramuta da stringa a numero"
Seconda cosa, ho provato comunque il codice ma mi vengono fuori numeri che non ci sono.. Comunque se avessi di parte i nomi riuscirei a capire meglio a chi dovrebbero appartenere i numeri e quindi capire il problema..
Grazie ancora di tutto!
Innanzitutto grazie mille!!
Allora..ci sono due problemi.. il primo è che nel mio file .txt ho salvati prima i numeri (che sarebbero i soldi) e sulla stessa riga la persona che li possiede e dal tuo programma resta solo il numero.. non so se sia dovuto magari a questo: "numeri(c) = Val(line) 'tramuta da stringa a numero"
Seconda cosa, ho provato comunque il codice ma mi vengono fuori numeri che non ci sono.. Comunque se avessi di parte i nomi riuscirei a capire meglio a chi dovrebbero appartenere i numeri e quindi capire il problema..
Grazie ancora di tutto!
Line Input #file, line
con questa riga presumo che prendi numeri ma anche se fossero stringhe con la funzione val ci dovrebbero essere solo numeri
controlla...
Appunto, il problema è che a me serve vedere sia il numero che la stringa..
Appunto, il problema è che a me serve vedere sia il numero che la stringa..
fammi vedere una line come è fatta...
che ne sò è così?
13 okay
1 ok
9 k
ecc ecc
tu vuoi ordinare i numeri così:
13 okay
9 k
1 ok
giusto...?
se è così ti ho corretto il listato sopra
In pratica come puoi vedere dalla routine di ordinamento non fai altro che ordinare il numero maggiore e ti porti appresso la stringa a cui fà parte
ora però devi mettere il numero e la stringa nell'indice in quanto non sò come è fatta line
Esattamente! Fai conto che nel file .txt ci siano queste righe:
520 Luca
450 Marco
210 Andrea
101 Manuel
Per dirla tutta è una classifica di una mano di poker, Fish & Nome del giocatore..
Grazie ancora!
Esattamente! Fai conto che nel file .txt ci siano queste righe:
520 Luca
450 Marco
210 Andrea
101 Manuel
Per dirla tutta è una classifica di una mano di poker, Fish & Nome del giocatore..
Grazie ancora!
allora perfetto...
ti ho corretto il listato guarda queste righe:
List1.AddItem line
numero(c)= mettici il numero
stringa(c)=mettici la stringa ma devi farlo tu io non so come è fatta la linea letta
devi prendere line la tagli, lo fai tu e metti dentro numero(c)= il numero estratto con val mentre in stringa(c) metti il nome
l'ho provato e funziona benissimo ora però devi riempire numero(c) con il numero e stringa(c) con il nome
vedrai che è okay...
Edit: Ancora un aiuto con la funzione split potresti tagliare bene
Dim tmp() As String
tmp = Split(line, " ")
ecc ecc...
ciao
Devi perdonarmi ma ho un po' di confusione.. :muro:
numero(c)= mettici il numero
stringa(c)=mettici la stringa ma devi farlo tu io non so come è fatta la linea letta
In che senso mettici il numero e sotto la stringa?
Missà che non mi sono spiegato molto bene..
Ricapitolo un secondo e poi vediamo dove sto sbagliando se hai un attimo di pazienza :D
Allora: Finisce una mano di poker e quando clicco su un command "CARTE NUOVE" il programma prende i nomi delle persone (txtgiocatore1.text, txtgiocatore2.text, ecc fino alla txtgiocatore9.text) e le fish che hanno in quel momento (txtfish1.text, txtfish2.text, ecc fino alla txtfish9.text) e le salva in un file "Save_Fish.txt" in questa maniera:
450 Marco che sarebbe nel programma (txtfish1.text) & (txtgiocatore1.txt)
520 Luca (txtfish2.text) & (txtgiocatore2.txt)
101 Manuel (txtfish3.text) & (txtgiocatore3.txt)
210 Andrea (txtfish4.text) & (txtgiocatore4.txt)
Fatto questo il programma mi cancella la lista precedente per aggiornarla e carica il file Save_Fish nella Listbox.
In conclusione non capisco cosa dovrei mettere dove tu dici che andrebbe il numero e dopo la stringa.. è quello che non capisco..
Grazie ancora per la pazienza e l'aiuto! :ave:
Devi perdonarmi ma ho un po' di confusione.. :muro:
numero(c)= mettici il numero
stringa(c)=mettici la stringa ma devi farlo tu io non so come è fatta la linea letta
In che senso mettici il numero e sotto la stringa?
Missà che non mi sono spiegato molto bene..
Ricapitolo un secondo e poi vediamo dove sto sbagliando se hai un attimo di pazienza :D
Allora: Finisce una mano di poker e quando clicco su un command "CARTE NUOVE" il programma prende i nomi delle persone (txtgiocatore1.text, txtgiocatore2.text, ecc fino alla txtgiocatore9.text) e le fish che hanno in quel momento (txtfish1.text, txtfish2.text, ecc fino alla txtfish9.text) e le salva in un file "Save_Fish.txt" in questa maniera:
450 Marco che sarebbe nel programma (txtfish1.text) & (txtgiocatore1.txt)
520 Luca (txtfish2.text) & (txtgiocatore2.txt)
101 Manuel (txtfish3.text) & (txtgiocatore3.txt)
210 Andrea (txtfish4.text) & (txtgiocatore4.txt)
Fatto questo il programma mi cancella la lista precedente per aggiornarla e carica il file Save_Fish nella Listbox.
In conclusione non capisco cosa dovrei mettere dove tu dici che andrebbe il numero e dopo la stringa.. è quello che non capisco..
Grazie ancora per la pazienza e l'aiuto! :ave:
Allora:
se line vale "450 Marco"
fai numero(c)="450"
e stringa(c)="Marco"
poi nel loop leggi la prossima line che sarebbe
line vale "520 Luca"
numero(c)="520"
stringa(c)="Luca"
e così via
in pratica leggi line che è stringa "450 Marco"
la splitti ovvero la tagli in 2 e fai
numero(c)=val(mid(line1,3)) che corrisponde al numero 450
stringa(c)=line(mid(5,9)) che corrisponde alla stringa Marco
poi c si incrementa di 1 c=c+1
la prossima line vale "520 Luca"
quindi
numero(c)=val(mid(line1,3)) che corrisponde al numero 520
stringa(c)=line(mid(5,9)) che corrisponde alla stringa Luca
ma fallo tu almeno questo non mi sembra difficile...
devi fare questo alle 2 righe che ti ho scritto nel listato ovvero:
----------
numero(c)= mettici il numero 520
stringa(c)=mettici la stringa Luca
ecc. ecc.
----------
okay?
vedrai che se fai questo l'algoritmo di ordinamento funziona a meraviglia e vorrei che lo studiassi mettendo le linee stop per vedere proprio come funziona e che hai capito sennò questo 3d non avrebbe senso;) ;)
ciao a domani
Allora:
se line vale "450 Marco"
fai numero(c)="450"
e stringa(c)="Marco"
poi nel loop leggi la prossima line che sarebbe
line vale "520 Luca"
numero(c)="520"
stringa(c)="Luca"
e così via
in pratica leggi line che è stringa "450 Marco"
la splitti ovvero la tagli in 2 e fai
numero(c)=val(mid(line1,3)) che corrisponde al numero 450
stringa(c)=line(mid(5,9)) che corrisponde alla stringa Marco
poi c si incrementa di 1 c=c+1
la prossima line vale "520 Luca"
quindi
numero(c)=val(mid(line1,3)) che corrisponde al numero 520
stringa(c)=line(mid(5,9)) che corrisponde alla stringa Luca
ma fallo tu almeno questo non mi sembra difficile...
devi fare questo alle 2 righe che ti ho scritto nel listato ovvero:
----------
numero(c)= mettici il numero 520
stringa(c)=mettici la stringa Luca
ecc. ecc.
----------
okay?
vedrai che se fai questo l'algoritmo di ordinamento funziona a meraviglia e vorrei che lo studiassi mettendo le linee stop per vedere proprio come funziona e che hai capito sennò questo 3d non avrebbe senso;) ;)
ciao a domani
Ok grazie mille. Ci sto provando ma sono un po' incespicato..
Allora fare come dici te mi sembra strano, perchè ogni volta i numeri cambiano, e dal tuo codice setti la lunghezza del numero, che però può variare e diventare magari 15000, venendo fuori un casino!..
Perchè non sono andato a fare informatica?!?! :muro:
Ok grazie mille. Ci sto provando ma sono un po' incespicato..
Allora fare come dici te mi sembra strano, perchè ogni volta i numeri cambiano, e dal tuo codice setti la lunghezza del numero, che però può variare e diventare magari 15000, venendo fuori un casino!..
Perchè non sono andato a fare informatica?!?! :muro:
usa la funzione split nei post sopra te l'ho segnalata
metti lo spazio " " trovi il numero e poi il secondo termine è il nome.
oppure puoi leggere carattere per carattere e come trovi lo spazio hai il numero e poi leggi carattere per carattere il rimanente nome:
esempio:
line = "15000 Mario"
dim app as string
dim controllo as bolean
controllo=false
app="":for i=0 to len(line)
if mid(line,i,1)<>" " then
app=app+mid(line,i,1)
else
if controllo=false then
numero(c)=val(app)
controllo=true
app=""
else
numero(c)=val(app)
controllo=true
app=""
endif
stringa(c)=app
app=""
endif
next i
ecco usa questa routine sopra ti ho correto il listato con questa prova un pò se và
listato
Dim file As Integer
Dim line As String
Dim numeri(1000), nTemp(1000), c, cc, b As Integer
Dim stringa(1000), nStringaTemp(1000), str As String
Dim appp As String
Dim controllo As Boolean
file = FreeFile()
On Error Resume Next
Open app.path & "\Save_Fish.txt" For Input As #file
If Err Then Exit Sub
c = 0
Do While Not EOF(file)
Line Input #file, line
List1.AddItem line
appp = "": For i = 1 To Len(line)
If Mid(line, i, 1) <> " " Then
appp = appp + Mid(line, i, 1)
Else
If controllo = False Then
numeri(c) = Val(appp)
controllo = True
appp = ""
Else
stringa(c) = Trim(appp)
controllo = False
appp = ""
End If
End If
Next i
If controllo = True Then stringa(c) = Trim(appp)
c = c + 1 'contatore indice
Loop
Close #file
Stop 'controlla la list creata
For t = 0 To c - 1
nTemp(t) = numeri(t) 'passa i numeri in una matrice temporanea
nStringaTemp(t) = stringa(c)
Next t
'studiati questo sotto togliendo i commenti agli stop
For q = 0 To c - 1
b = nTemp(q)
str = nStringaTemp(q)
'stop
For s = q To c - 1
If nTemp(s) >= b Then b = nTemp(s): cc = s: str = nStringaTemp(s) 'ordinamento crescente
'If nTemp(s) < b Then b = nTemp(s): cc = s 'ordinamento decrescente
Next s
nTemp(cc) = nTemp(q)
nTemp(q) = b
nStringaTemp(c) = nStringaTemp(q)
nStringaTemp(q) = str
'stop
Next q
List1.Clear
For i = 0 To c - 1
List1.AddItem (nTemp(i) + " " + nStringaTemp(i))
Next i
Stop 'controlla se tutto è okay
incolla e vai...;)
Incollato ma non funziona :muro:
Ho dovuto cambiare app perchè andava in conflitto con app.path e ho dimensionato un paio di variabili..e la lista viene caricata in maniera decrescente, ma il problema è sempre lo stesso..
980 Manuel
50 Luca
110 Andrea
In pratica legge solo il primo numero, non il numero intero..
Scusa ancora per la pazienza.. :ave:
..mi sto guardando fuori la funzione split intanto..
Incollato ma non funziona :muro:
Ho dovuto cambiare app perchè andava in conflitto con app.path e ho dimensionato un paio di variabili..e la lista viene caricata in maniera decrescente, ma il problema è sempre lo stesso..
980 Manuel
50 Luca
110 Andrea
In pratica legge solo il primo numero, non il numero intero..
Scusa ancora per la pazienza.. :ave:
..mi sto guardando fuori la funzione split intanto..
scusami te l'ho ricorretto
scusami te l'ho ricorretto
Devi perdonarmi ma non carica niente nella listbox..
Prima come ho detto le caricava in maniera errata, ma le caricava, adesso la lista resta vuota..
Ho modificato la variabile "app" con "appp" modificandola in tutto il programma e ho dimensionato numero e str come variant...
Scusa ancora.. :(
Devi perdonarmi ma non carica niente nella listbox..
Prima come ho detto le caricava in maniera errata, ma le caricava, adesso la lista resta vuota..
Ho modificato la variabile "app" con "appp" modificandola in tutto il programma e ho dimensionato numero e str come variant...
Scusa ancora.. :(
ok non l'havevo provato ora l'ho fatto e non mi dà errori
reincolla l'ultimo listato e prova dovrebbe andare senza errori
poi vediamo...
Edit: line deve essere cmq sempre così:
"520 Marco"
"15000 Luca"
"1 Sergio"
"2050075 Carlo"
solo con un " " tra quota e nome se no tocca modificarlo
Ho provato ma purtroppo mi sono accorto che non li ordina proprio..ho provato sia con crescente che con decrescente, ma dal file .txt li prende e li mette direttamente nella listbox..
Ti aiuterei volentieri, ma non riesco proprio a starti dietro..è troppo difficile il codice per me.. :(
Fermati!!!!!!!!!!!!
Ora funziona....!!!!!
Aspetta che ti incollo l'ultimo listato ora è okay
ciò già rimesso 349.11 euro
copia e incolla
Dim file As Integer
Dim line As String
Dim numeri(1000), nTemp(1000), c, cc, b As Integer
Dim stringa(1000), nStringaTemp(1000), stri As String
Dim appp As String
Dim controllo As Boolean
file = FreeFile()
On Error Resume Next
Open app.path & "\Save_Fish.txt" For Input As #file
If Err Then Exit Sub
c = 0
Do While Not EOF(file)
Line Input #file, line
List1.AddItem line
controllo=false
appp = "": For i = 1 To Len(line)
If Mid(line, i, 1) <> " " Then
appp = appp + Mid(line, i, 1)
Else
If controllo = False Then
numeri(c) = Val(appp)
controllo = True
appp = ""
Else
stringa(c) = Trim(appp)
controllo = False
appp = ""
End If
End If
Next i
If controllo = True Then stringa(c) = Trim(appp)
c = c + 1 'contatore indice
Loop
Close #file
Stop 'controlla la list creata
For t = 0 To c - 1
nTemp(t) = numeri(t) 'passa i numeri in una matrice temporanea
nStringaTemp(t) = stringa(t)
Next t
'studiati questo sotto togliendo i commenti agli stop
For q = 0 To c - 1
b = nTemp(q)
stri = nStringaTemp(q)
'stop
For s = q To c - 1
If nTemp(s) >= b Then b = nTemp(s): cc = s: stri = nStringaTemp(s) 'ordinamento crescente
'If nTemp(s) < b Then b = nTemp(s): cc = s: stri = nStringaTemp(s) 'ordinamento decrescente
Next s
nTemp(cc) = nTemp(q)
nTemp(q) = b
nStringaTemp(cc) = nStringaTemp(q)
nStringaTemp(q) = stri
'stop
Next q
List1.Clear
For i = 0 To c - 1
List1.AddItem (Trim(str(nTemp(i))) + " " + nStringaTemp(i))
Next i
Stop 'controlla se tutto è okay
Io copio e incollo pari pari come hai postato te, ma mi da due errori..
il primo è che str non è dimensionato e l'ho dimensionato..
il secondo è agli stop.. e metto l'apostrofo davanti agli stop..
è per questo che a me non va e a te si?!
Cosa vuol dire che c'hai perso 350 euro scusa?
Io copio e incollo pari pari come hai postato te, ma mi da due errori..
il primo è che str non è dimensionato e l'ho dimensionato..
il secondo è agli stop.. e metto l'apostrofo davanti agli stop..
è per questo che a me non va e a te si?!
Cosa vuol dire che c'hai perso 350 euro scusa?
il listato sopra l'ultimo l'ho corretto 2 volte riprova ad incollarlo DEVE FUNZIONARE!!!!
Questa volta carica il file .txt ma nella listbox al posto del numero e della stringa mette "0".
Se invece quasi in fondo tolgo List1.Clear allora carica i valori (anche se non in maniera giusta ma sempre con quel problema) e in fondo aggiunge sempre gli zeri..
Questa volta carica il file .txt ma nella listbox al posto del numero e della stringa mette "0".
Se invece quasi in fondo tolgo List1.Clear allora carica i valori (anche se non in maniera giusta ma sempre con quel problema) e in fondo aggiunge sempre gli zeri..
okay allora funziona
mi fai vedere il file testo incollalo per favore
Ecco qui..
Private Sub Command1_Click()
Dim file As Integer
Dim line As String
Dim numeri(1000), nTemp(1000), c, cc, b As Integer
Dim stringa(1000), nStringaTemp(1000), stri As String
Dim appp As String
Dim controllo As Boolean
file = FreeFile()
On Error Resume Next
Open App.Path & "\Save_Fish.txt" For Input As #file
If Err Then Exit Sub
c = 0
Do While Not EOF(file)
Line Input #file, line
List1.AddItem line
controllo = False
appp = "": For i = 1 To Len(line)
If Mid(line, i, 1) <> " " Then
appp = appp + Mid(line, i, 1)
Else
If controllo = False Then
numeri(c) = Val(appp)
controllo = True
appp = ""
Else
stringa(c) = Trim(appp)
controllo = False
appp = ""
End If
End If
Next i
If controllo = True Then stringa(c) = Trim(appp)
c = c + 1 'contatore indice
Loop
Close #file
'Stop 'controlla la list creata
For t = 0 To c - 1
nTemp(t) = numeri(t) 'passa i numeri in una matrice temporanea
nStringaTemp(t) = stringa(t)
Next t
'studiati questo sotto togliendo i commenti agli stop
For q = 0 To c - 1
b = nTemp(q)
stri = nStringaTemp(q)
'stop
For s = q To c - 1
'If nTemp(s) >= b Then b = nTemp(s): cc = s: stri = nStringaTemp(s) 'ordinamento crescente
If nTemp(s) < b Then b = nTemp(s): cc = s: stri = nStringaTemp(s) 'ordinamento decrescente
Next s
nTemp(cc) = nTemp(q)
nTemp(q) = b
nStringaTemp(cc) = nStringaTemp(q)
nStringaTemp(q) = stri
'stop
Next q
List1.Clear
For i = 0 To c - 1
List1.AddItem (Trim(Str(nTemp(i))) + " " + nStringaTemp(i))
Next i
'Stop 'controlla se tutto è okay
End Sub
no incollami il file.txt dove sono salvati i dati perlomeno le prime 5 righe;)
Edit:
incollami rispettando le tabulazioni Save_Fish.txt
Il file text si chiama: Save_Fish.txt
La prima riga è questa sotto, dove c'è l'80
80 - A
9 - B
11 - C
Il file text si chiama: Save_Fish.txt
La prima riga è questa sotto, dove c'è l'80
80 - A
9 - B
11 - C
ma che te possino avevamio detto così:
80 A
9 B
11 C
la mia routinetra il numro e il nome deve avere solo lo spazio e cioè " "
aspetta che te lo correggo...
dai che è fatta ci siamo!!!!!!!!!
okay
quindi la tua stringa è:
520 - Marco ovvero
520 2 spazi trattino e 2 spazi... ma dillo prima noooooo!!!!
dopo Marco non ci deve essere nulla okay? Se no stiamo da capo a 12;)
Dim file As Integer
Dim line As String
Dim numeri(1000), nTemp(1000), c, cc, b As Integer
Dim stringa(1000), nStringaTemp(1000), stri As String
Dim appp As String
Dim controllo As Boolean
file = FreeFile()
On Error Resume Next
Open App.Path & "\Save_Fish.txt" For Input As #file
If Err Then Exit Sub
c = 0
Do While Not EOF(file)
Line Input #file, line
List1.AddItem line
controllo = False
appp = "": For i = 1 To Len(line)
If Mid(line, i, 1) <> " " Then
appp = appp + Mid(line, i, 1)
Else
If controllo = False Then
numeri(c) = Val(appp)
controllo = True
i = i + 4
appp = ""
Else
stringa(c) = Trim(appp)
controllo = False
appp = ""
End If
End If
Next i
If controllo = True Then stringa(c) = Trim(appp)
c = c + 1 'contatore indice
Loop
Close #file
'Stop 'controlla la list creata
For t = 0 To c - 1
nTemp(t) = numeri(t) 'passa i numeri in una matrice temporanea
nStringaTemp(t) = stringa(t)
Next t
'studiati questo sotto togliendo i commenti agli stop
For q = 0 To c - 1
b = nTemp(q)
stri = nStringaTemp(q)
'stop
For s = q To c - 1
If nTemp(s) >= b Then b = nTemp(s): cc = s: stri = nStringaTemp(s) 'ordinamento crescente
'If nTemp(s) < b Then b = nTemp(s): cc = s: stri = nStringaTemp(s) 'ordinamento decrescente
Next s
nTemp(cc) = nTemp(q)
nTemp(q) = b
nStringaTemp(cc) = nStringaTemp(q)
nStringaTemp(q) = stri
'stop
Next q
List1.Clear
For i = 0 To c - 1
List1.AddItem (Trim(Str(nTemp(i))) + " " + nStringaTemp(i))
Next i
'Stop 'controlla se tutto è okay
Se il file testo che leggi rispetta tali norme e ancora non funziona mi taglio le palle!!!!!!!;) ;)
Per questa volta potrai procreare senza problemi, funziona tutto alla grande :D
Mi hai risolto un problemone!! Scusami se non sono stato chiaro...ti avrei risparmiato una botta di tempo (e di soldi forse?! :confused: )
Grazie mille ancora..funziona tutto alla grande!!!
:cincin:
Per questa volta potrai procreare senza problemi, funziona tutto alla grande :D
Mi hai risolto un problemone!! Scusami se non sono stato chiaro...ti avrei risparmiato una botta di tempo (e di soldi forse?! :confused: )
Grazie mille ancora..funziona tutto alla grande!!!
:cincin:
e vai... ma quanto ci vuole a partorire!!!!!
No basta per carità... me ne basta uno e avanza pure;) ;)
Quando si leggono dati da un file testo bisogna tramite code "tagliare il file" a nostro comodo.
okay
una domanda quanti anni hai?
Ho 18 anni.. e sono perito elettrotecnico non informatico :D
Insomma sono autodidatta per quel poco che so..
Grazie ancora!
Ho 18 anni.. e sono perito elettrotecnico non informatico :D
Insomma sono autodidatta per quel poco che so..
Grazie ancora!
figurati è stato un piacere;)
In bocca al lupo;)
Grazie, di tutto! :)
Buona giornata!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.