Pagina 1 di 1

[VB6] Prendere in considerazione solo una parte

MessaggioInviato: mer dic 02, 2009 10:04 pm
da Mikleman
Ciao a tutti,
oggi vi pongo un quesito a cui non so rispondere [uhm]

Se io nel text1 ho una stringa di questo tipo:
Codice: Seleziona tutto
Bfhttp://www.habbo.com/client/private/2088589/id


E' da considerare anche che la stringa potrebbe cambiare e diventare:
Codice: Seleziona tutto
Bfhttp://www.habbo.com/client/private/12/id


Il numero delle cifre è quindi variabile ma qualsiasi cosa succeda rimarranno sempre numeri naturali.
La domanda è :
come faccio ad ordinare a vb6 di prendere in considerazione solamente ciò che sta tra Bfhttp://www.habbo.com/client/private/ e /id ?


Idee?

Re: [VB6] Prendere in considerazione solo una parte

MessaggioInviato: mer dic 02, 2009 11:31 pm
da M@ttia
Ora sono un po' arrugginito sulla sintassi, ma basta che gli dici di "tagliare/ignorare" i primi 38 caratteri della stringa (ovvero Bfhttp://www.habbo.com/client/private/) e gli ultimi 5 (ovvero /id).

Re: [VB6] Prendere in considerazione solo una parte

MessaggioInviato: gio dic 03, 2009 10:09 am
da Mikleman
M@ttia ha scritto:Ora sono un po' arrugginito sulla sintassi, ma basta che gli dici di "tagliare/ignorare" i primi 38 caratteri della stringa (ovvero Bfhttp://www.habbo.com/client/private/) e gli ultimi 5 (ovvero /id).

Eggià ma il problema è che non conosco la sintassi giusta [acc2]


EDIT
ho risolto [^]

Private Sub Command1_Click()
Dim stringa As String
stringa = Text1.Text
Text2.Text = Mid(stringa, 39, 7)
End Sub

Per chi avesse il mio stesso problema può dare uno sguardo qui
http://www.mrwebmaster.it/visual-basic/ ... e_170.html

Re: [VB6] Prendere in considerazione solo una parte

MessaggioInviato: gio dic 03, 2009 12:53 pm
da Silver Black
Bene tu abbia già risolto. Per le stringhe è importante saperle manipolare con le funzioni Left, Right, Mid, InStr.

Re: [VB6] Prendere in considerazione solo una parte

MessaggioInviato: gio dic 03, 2009 1:09 pm
da M@ttia
Mikleman ha scritto:Text2.Text = Mid(stringa, 39, 7)
Così facendo però prendi le 7 lettere/numeri dopo il 39° carattere, ma dal tuo esempio sopra il numero aveva lunghezza variabile (non sempre 7 cifre)...

Re: [VB6] Prendere in considerazione solo una parte

MessaggioInviato: gio dic 03, 2009 1:12 pm
da Mikleman
Diamine hai ragione
non so perché ho pensato che il codice prendesse in considerazione le prime e le ultime lettere (vedi 37,7) e pensavo che dovessi inserire due caratteri in più a causa dei caratteri speciali :S

Umh.. allora come potrei fare? Esiste qualche comando che obbliga vb6 a prendere in considerazione solo i numeri che sono presenti in una stringa?


EDIT

risolto xD

Codice: Seleziona tutto
Private Sub Command1_Click()
Text1.Text = FilterString(Text1.Text, "1234567890")
End Sub


Bisogna però usare un modulo con il seguente codice:

Codice: Seleziona tutto
Function FilterString(Text As String, validChars As String) As String
Dim i As Long, result As String
For i = 1 To Len(Text)
If InStr(validChars, Mid$(Text, i, 1)) Then
result = result & Mid$(Text, i, 1)
End If
Next
FilterString = result
End Function

Re: [VB6] Prendere in considerazione solo una parte

MessaggioInviato: gio dic 03, 2009 2:20 pm
da Andy94
Stavo pensando (ma tu potresti anche già aver risolto e quindi non tenere questa cosa nemmeno in considerazione): perché non splitti la stringa all'interno di un array (prendendo come carattere divisore la /) e poi consideri sempre l'elemento numero X (visto che la posizione di quanto ti interessa si trova sempre allo stesso punto?

Re: [VB6] Prendere in considerazione solo una parte

MessaggioInviato: gio dic 03, 2009 3:36 pm
da Mikleman
Se usassi lo split di / non otterrei un risultato come questo?

Bfhttp:
www.habbo.com
client
private
2088589
id

Re: [VB6] Prendere in considerazione solo una parte

MessaggioInviato: gio dic 03, 2009 3:59 pm
da Andy94
Esatto. Ogni volta che devi recuperare l'ID che ti serve, gli dici sempre di considerare l'elemento numero 4 dell'array (perché parte da 0).

Re: [VB6] Prendere in considerazione solo una parte

MessaggioInviato: gio dic 03, 2009 5:26 pm
da Mikleman
Andy94 ha scritto:Esatto. Ogni volta che devi recuperare l'ID che ti serve, gli dici sempre di considerare l'elemento numero 4 dell'array (perché parte da 0).

Sì il risultato è identico :) però preferisco usare il modulo che tanto mi consente di usare una sola stringa

Private Sub Command1_Click()
Dim stringa As String
Dim s() As String
Dim i As Integer
i = 0
stringa = Text1.Text
s = Split(stringa, "/")
For i = 0 To UBound(s)
Text2.Text = s(5)
Next
End Sub