Newsgroup: it.comp.lang.visual-basic
Titolo: Mi controllate questo sorgente qui...

Salve, 
datemi un occhio a quanto ho scritto...non capisco perchč non
funziona...o meglio, forse ho capito il perchč ma...mi serve una
chiarimento. Mi stavo scrivendo una specie di sveglietta:
Dim ora1, min1, ora2, min2 As Integer
Private Sub Command1_Click()
    ora1 = Text1.Text
    min1 = Text2.Text
    'ora1 = 17
    'min1 = 26
    ora2 = Hour(Time)
    min2 = Minute(Time)
 
    If ora1 = ora2 Then
        Do While min2 <> min1 
            min2 = Minute(Time)
            Text3.Text = "running"
            If min2 = min1 Then
                Text3.Text = "DRIINN!!"
                Text3.Refresh
                Exit Do 
            End If
        Loop
    Else
        MsgBox ("ora diversa")
    End If
End Sub
Il tutto doveva funzionare cosě. Text1 e Text2 sono due campi di testo
dai quali prendo l' ora e i minuti, quello che ho scritto li lo vado a
mettere in ora1 e min1. Poi mi prendo l' ora e i minuti dal sistema,
mettendoli rispettivamente in ora 2 e min2. Controllavo poi se l' ora
era uguale, se questa era uguale con un ciclo prendevo i minuti dal
sistema finchč questi non arrivavano a quelli che ho messo io, quelli
scritti text2 e poi messi in in min1. Il problema qual' č: se io
prendo l' ora e i minuto dalle aree di tetesto, quando li confronto
con quelli di sistema anche se sono uguali mi idce che sono diversi.
Nella if ora1 = ora2, mi esce sempre per diverso...e non capisco
perchč. Voi che ne dite?

     min2 = Minute(Time)
Prova a dichiarare le variabili correttamente oppure ad assegnare
valori dello stesso tipo, come:
     ora1 = CInt(Text1.Text)
     min1 = CInt(Text2.Text)
     ora2 = CInt(Hour(Time))
ecc.

> SKUNK:

Ti propongo una reinterpretazione del tutto nella quale,
implicitamente, esprimo alcune considerazioni riguardo certe
soluzioni da te adottate. Prova a confrontare e, se vuoi, se
ne puo` riparlare in dettaglio. Tieni conto che ho usato solo
variabili Variant non per invitarti ad usarle ma per
evidenziare come credo andrebbero trattate in caso d'uso.
Option Explicit
Public InChiusura
Private Sub TextBoxGotFocus()
  Dim ctl
  Set ctl = Screen.ActiveControl
  If ctl Is Nothing Then Exit Sub
  If TypeOf ctl Is VB.TextBox Then
    With ctl
      .SelStart = 0
      .SelLength = Len(.Text)
    End With
  End If
  Set ctl = Nothing
End Sub
Private Sub SetControls(Optional ByVal Stato)
  If IsMissing(Stato) Then Stato = True
  If Not (VarType(Stato) = vbBoolean) Then Stato = True
  If Stato Then
    Screen.MousePointer = vbDefault
  Else
    Screen.MousePointer = vbArrowHourglass
    Text3.Text = ""
  End If
  Command1.Enabled = Stato
  Text1.Enabled = Stato
  Text2.Enabled = Stato
  Text3.Enabled = Stato
End Sub
Private Sub Command1_Click()
  Dim Ora1, Min1, Ora2, Min2, Interrompi, Adesso
  If IsEmpty(Interrompi) Then
    Ora1 = Text1.Text
    If IsNumeric(Ora1) Then
      Ora1 = CInt(Ora1)
    Else
      Interrompi = "Errore in 'Ora'."
    End If
  End If
  If IsEmpty(Interrompi) Then
    Min1 = Text2.Text
    If IsNumeric(Min1) Then
      Min1 = CInt(Min1)
    Else
      Interrompi = "Errore in 'Minuti'."
    End If
  End If
  If IsEmpty(Interrompi) Then
    Adesso = Time
    Ora2 = Hour(Adesso)
    If Ora1 <> Ora2 Then Interrompi = "Ora diversa."
  End If
  If Not IsEmpty(Interrompi) Then
    MsgBox Interrompi
    Exit Sub
  End If
  SetControls False
  Min2 = Minute(Adesso)
  If Min2 < Min1 Then
    Text3.Text = "running"
    Do While Min2 < Min1
      If InChiusura Then Exit Sub
      Min2 = Minute(Time)
      DoEvents
    Loop
    Text3.Text = "DRIINN!!"
  Else
    Text3.Text = "Orario trascorso."
  End If
  SetControls
End Sub
Private Sub Form_Load()
  InChiusura = False
  Command1.Default = True
End Sub
Private Sub Form_Unload(Cancel As Integer)
  InChiusura = True
End Sub
Private Sub Text1_GotFocus()
  TextBoxGotFocus
End Sub
Private Sub Text2_GotFocus()
  TextBoxGotFocus
End Sub
Private Sub Text3_GotFocus()
  TextBoxGotFocus
End Sub
--
Ciao.
Maurizio
--------
?SPQR(C)
 X