Než se dostanu k vašemu programu, měl bych zvídavou otázku - pokud, jak sám píšete - začínáte s programováním, máte nějaký pádný důvod k tomu začínat se "starým" VB 6" (nebo alespoň do této kategorie jste svůj dotaz zařadil)? Proč raději nezačnete s něčím novějším a výrazně výkonnějším, - v neposlední řadě i Vaše případné další dotazy na těchto stránkách dojdou lepší odezvy, protože, jak můžete zjistit v právě aktuální anketě na levé straně těchto webů, většina z nás zde se scházejících je orientována právě na novější .NET platformy. Ale k Vašemu dotazu: Jednak není moc programátorské (i když to díky "blbuvzdornosti" a vnitřní inteligenci VB funguje) do proměnných, se kterými provádíte aritmetické operace (odčítání jedničky) přiřazovat string. Ale Váš problém, proč se Vám to na konci odpočítávání nevynuluje do výchozích hodnot spočívá v tom, že k této operaci přistupujete ve chvíli (díky vnořeným IF-ům), kdy sekundy, minuty i hodiny se rovnají "-1". Jenomže k tomu NIKDY nemůže dojít, protože NAD tímto rozhodováním sekundy i minuty již "opravíte" na hodnotu "-59". Proto, pokud by měla Vaše konstrukce fungovat, měla by vypadat nějak takto:
Private Sub Timer1_Timer()
sekundy = sekundy - 1 ' odečítání 1 sekundy
If sekundy = -1 Then ' pokud sekundy "podtečou", posuneme čítač minut
sekundy = 59
minuty = minuty - 1
End If
If minuty = -1 Then ' pokud minuty "podtečou", posuneme čítač hodin
' (sekund = "59") ' zbytečné, protože jsme sekundy již opravili v předchozím IFu (navíc tady byl překlep v názvu proměnné)
minuty = 59
hodiny = hodiny - 1
End If
If hodiny = -1 Then ' pokud "podtečou" hodiny je jasné, že jsme na konci odpočtu
sekundy.Caption = Label4.Caption
minuty.Caption = Label5.Caption
hodiny.Caption = Label6.Caption
End If
End Sub
A poslední připomínka, přečtěte si pokyny jak vkládat příspěvky - tam například zjistítte, že pro vkládání kódu je zde k dispozici speciální formátovací značka - je to pak mnohem přehlednější.
|