PDA

View Full Version : [VB] Contare i "|" all'interno della striga


michael1one
05-06-2014, 15:06
Premetto che non so praticamente nulla di VB, ma cercherò di spiegare un po meglio quello che voglio fare.


Sto facendo una lista di ricette con vari ingredienti da mettere in varie variabili una volta che ho inserito tutti gli ingredienti salvo il tutto con un nome che viene aggiunto nella listbox all'interno di questa listbox sto utilizzando una variabile "ListaRicette" di tipo stringa, ogni ricetta che salvo viene aggiunta in "ListaRicette", dovrei però mettere un limite alla ricette che posso aggiungere nella listbox, volevo farlo contando i "pipe" che ci sono nella stringa "ListaRicette".

Questo è quello che mi è venuto in mente lo so che non funziona, ma ho pensato una cosa simile, spero che qualcuno mi aiuto a farlo funzionante.
Tramite pulsante

Public Sub Click()
check = InStr (ListaRicette,"|") <> 0
Left (ListaRicette, check + 1)
cont = + 1
If cont >= 10 Then
AbilitoSave = false
End If
End Sub

:stordita:

Daniels118
05-06-2014, 15:29
Invece di utilizzare una stringa usa una collection, è molto più semplice da gestire.

michael1one
05-06-2014, 15:54
No, devo cercare di seguire quello che sto facendo :D
Mi son dimenticato anche di dire che non sto usando il programma Visual Basic, ma un programma che mi permette di creare alcuni script in visual basic

Daniels118
05-06-2014, 15:57
E che roba è? Tanto vale che usi vb script!

Comunque la funzione instr ha un parametro opzionale che indica la posizione di partenza della ricerca. Chiamando ripetutamente instr partendo dalla posizione successiva a quella trovata in precedenza fino a quando il carattere viene trovato, ed incrementando un contatore ad ogni iterazione, otterrai all'uscita dal ciclo il numero di occorrenze del carattere che ti interessa.

michael1one
05-06-2014, 16:29
E che roba è? Tanto vale che usi vb script!

Comunque la funzione instr ha un parametro opzionale che indica la posizione di partenza della ricerca. Chiamando ripetutamente instr partendo dalla posizione successiva a quella trovata in precedenza fino a quando il carattere viene trovato, ed incrementando un contatore ad ogni iterazione, otterrai all'uscita dal ciclo il numero di occorrenze del carattere che ti interessa.

Un piccolo esempio :wtf:

Daniels118
05-06-2014, 16:32
n = 0
p = instr(1, ListaRicette, "|")
do while p > 0
n = n + 1
p = instr(p + 1, ListaRicette, "|")
loop

michael1one
05-06-2014, 18:46
Siii! ha funzionato dopo qualche piccola modifica al programma sono riuscito a farlo funzionare come volevo :D

Grazie mille :D

wallytod
18-06-2014, 11:55
Puoi fare tutto con una sola istruzione..

Dim sTmp() As String

sTmp = Split(ListaRicette, "|")
Debug.Print UBound(sTmp)


Dichiari un array di stringhe e lo popoli splittando per "|" la stringa di origine. Tramite l'UBound, ricavi la dimensione del nuovo array.