Newsgroup: it.comp.lang.visual-basic
Titolo: Problema con split

Dim a() As String
a() = Split(Text1.Text, " ")
Text2.Text = CLng(a(1))
Text3.Text = CLng(a(2))
Text4.Text = CLng(a(3))
If text2.text = "tue" Then
    If text3.text = "nov" Then
        If text4.text = "30" Then
        MsgBox la data di oggi è oggi
        End If
    End If
End If
Text1.text contiene ad esempio
Tue Nov 30 15.26.08 2004
Ma mi da errore di run-time 13
tipo non corrispondente
Dove è l'errore?

 Dove è l'errore?
perchè non ci faciliti il compito dicendo tu in che riga si verifica
l'errore?
-- 
Salutoni
Sergio
Per rispondere... togli il group dall'indirizzo
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 tipo non corrispondente
Come fai a convertire la stringa "tue" in un long ?
a che ti serve il codice che hai scritto ? a sapere se in una txbox c'è una
determinata data ?
usa il datediff e il cdate()
Saluti


MsgBox la data di oggi è oggi
ma qua non mancano alcuni apicetti????

 ma qua non mancano alcuni apicetti????
fosse solo lě il problema...


 l'errore?
Su
Text2.Text = CLng(a(1))


Ma quello l'ho scritto tanto per farvi capire che la c'è un'istruzione!

 usa il datediff e il cdate()
dove posso trovare materiale informativo sul cdate?

 Text2.Text = CLng(a(1))
EVVIVA!
uno che risponde a tono alle domande.
senza scherzi, francesco, grazie davvero.
il perchè dell'errore te l'ha già detto fox mulder: in a(1) c'e una
stringa che non può essere convertita in numero, e quindi viene sollevata
una eccezione (volgarmente detto "errore")
una possibile soluzione al tuo problema potrebbe essere (ma quando avrò
finito di scrivere questo post te l'avranno già fornita in mille):
if isdate(text1.text) then
    if cdate(text1.text) = date then
         msgbox "Ma è oggi!"
    end if
end if
ma provala per bene, io non l'ho fatto ;-)


 ha scritto nel 
messaggio news:41ad...@x-privat.org...


 come dice il nome stesso converte in long l'espressione che gli passi.
E per fare quello che devo fare io cosa devo usare?

Dipende da cosa vuoi fare. Per mettere in un textbox una stringa
non serve alcuna conversione...
Puoi fare benissimo text2.text=a(0)
Se "a" è dichiarata come array di stringhe.
Poi se vuoi verificare se la data è quella di oggi ci sono altri
metodi (ho visto risposte ma non ho guardato cosa dicevano)
Andrea


 non serve alcuna conversione...
Io ho
Tue Nov 30 15.26.08 2004
in una text box e voglio dividere la prima parola, la seconda parola e la
terza ed andarle a mettere in textbox diverse

 terza ed andarle a mettere in textbox diverse
Allora puoi splittare come hai fatto nel tuo codice, e poi assegnare 
(sensa usare CLng) A(0) a Text1, A(1) a Text2 ed A(2) a Text3.
Split restituisce un array il cui indice inferiore č zero a meno che a 
VB tu non dica diversamente (ma non credo che tu l'abbia fatto).
-- 
Quando noi ignoranti eravamo di piů, tutto era piů bello (A. Celentano).
  ___   _   ___ _  _______   _______ ___
|   \ /_\ | _ \ |/ / _ ) \ / /_   _| __|
| |) / _ \|   / ' <| _ \\ V /  | | | _|
|___/_/ \_\_|_\_|\_\___/ |_|   |_| |___|

 ha scritto nel 
messaggio news:41adeca5$1...@x-privat.org...


 assicurati che ci siano abbastanza textbox!
Grazie.
Cmq ho risolto con un più semplice
a() = Split(Text1.Text, " ")
Text2.Text = (a(0))
Text3.Text = (a(1))
Text4.Text = (a(2))
Che ci adatta al mio banale caso.

 Dove è l'errore?
non puoi convertire in long una stringa. cioe', puoi, ma...
per qualcosa del genere mi ero scritto questo, per importare in un db i
nws/eml di oe5.
con le date di fastweb di solito protesta, ma in genere funzionicchia:
...
ElseIf LCase(Left(sArr(j), 5)) = "date:" And Not bDate Then
    sNew = sNew & sArr(j) & vbCrLf: bDate = True
    Dim s2 As String, sArr2() As String
    s2 = LCase(Right(sArr(j), Len(sArr(j)) - 6))
    s2 = Replace(s2, "jan", "gen")
    s2 = Replace(s2, "may", "mag")
    s2 = Replace(s2, "jun", "giu")
    s2 = Replace(s2, "jul", "lug")
    s2 = Replace(s2, "aug", "ago")
    s2 = Replace(s2, "sep", "set")
    s2 = Replace(s2, "oct", "ott")
    s2 = Replace(s2, "dec", "dic")
    sArr2 = Split(s2, " ")
    If Val(sArr2(0)) = 0 Then
        frmArk.txtDate = DateValue(Format(sArr2(1) & "/" & sArr2(2) & "/" &
sArr2(3), "dd/mm/yyyy"))
        frmArk.txtTime = sArr2(4)
    Else
        frmArk.txtDate = DateValue(Format(sArr2(0) & "/" & sArr2(1) & "/" &
sArr2(2), "dd/mm/yyyy"))
        frmArk.txtTime = sArr2(3)
    End If
...
con la funzione dell'api getlocaleinfo direi si possa fare molto meglio.
se hai voglia di google ng, c'e' un post di hal1961 dell'11.12.200 nel
thread "punto o virgola?" per un'idea di come usarla.
-- 
hth, ciao, j.
http://www.sundaysw.com