logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Visual Basic - jak stworzyć stoper z formatem mm:ss lub hh:mm:ss?

Bartek_Wosik 23 Maj 2005 14:01 6851 12
REKLAMA
  • #1 1517906
    Bartek_Wosik
    Poziom 27  
    Posty: 1028
    Pomógł: 100
    Ocena: 42
    Witam.
    Mam pytanie jak zrobic stoper który odmierzałby czas np od włączenia programu. Probowałem już robic cos takiego ale czas wyświetla mi się tylko w sekundach, a chciałbym mm:ss lub hh:mm:ss

    Pozdrawiam, Bartek
  • REKLAMA
  • #2 1518702
    jakubbulas
    Poziom 16  
    Posty: 227
    Pomógł: 8
    Ocena: 2
    Public Function mmss(Sekundy)
        Dim Wynik As String
        If (Sekundy - (Sekundy Mod 60)) / 60 >= 10 Then
            Wynik = (Sekundy - (Sekundy Mod 60)) / 60 & ":"
        Else
            Wynik = "0" & (Sekundy - (Sekundy Mod 60)) / 60 & ":"
        End If
        If Sekundy Mod 60 >= 10 Then
            Wynik = Wynik & (Sekundy Mod 60)
        Else
            Wynik = Wynik & "0" & (Sekundy Mod 60)
        End If
        mmss = Wynik
    End Function


    U mnie działało - dajeszgdzie Sekundy - czas w sekundach, a funkcja zwraca wynik w postaci mm:ss
    Pewnie są na to jakieś prostsze sposoby, ale ja ich nie znam.
  • #3 1519960
    sivex
    Poziom 27  
    Posty: 815
    Pomógł: 113
    Ocena: 25
    Ja to dla wlasnych celow zrobilem tak:

    Function ZmienCzas(Czas As Long) as String
    Dim hh, mm, ss As String

    hh = Czas / 3600
    mm = Fix((Czas - (hh * 3600)) / 60)
    ss = Czas Mod 60



    'Zeby byly zera przed cyframi pojedynczymi
    If Len(hh) = 1 Then hh = "0" & hh
    If Len(mm) = 1 Then mm = "0" & mm
    If Len(ss) = 1 Then ss = "0" & ss


    'Zapisanie wyniku do zmiennej (wynik funkcji)
    ZmienCzas = hh & ":" & mm & ":" & ss

    End Function

    Potem podajesz funkcji zmienna Sekundy np z timera ustawionego na interval 1000 i w okienku Text1 wyswietli ci czas w formacie hh:mm:ss

    text1 = ZmienCzas(Sekundy)



    megapozdro
  • #4 1520619
    Bartek_Wosik
    Poziom 27  
    Posty: 1028
    Pomógł: 100
    Ocena: 42
    sivex a jak mam to połaczyć z timerem?
  • REKLAMA
  • Pomocny post
    #5 1521337
    sivex
    Poziom 27  
    Posty: 815
    Pomógł: 113
    Ocena: 25
    Zrob zmienna publiczna np "LecaSekundy" w module tak zeby byla widoczna w calej aplikacji. wstaw timer na formatke kliknij na niego 2razy i wpisz"

    Private Sub Timer1_Timer()

    LecaSekundy = LecaSekundy +1

    'Mozesz odswierzyc pole tekstowe
    text1 = ZmienCzas(LecaSekundy)

    End Sub
  • Pomocny post
    #6 1521387
    Piotrek.pxf
    Poziom 27  
    Posty: 806
    Pomógł: 118
    Ocena: 65
    Dajesz w Formie jeden Timer i jedno pole tekstowe i wpisz kod:

    Dim sekundy As Long
    
    Private Sub Form_Load()
    sekundy = 0
    'Uwstawiamy "tykanie" timera co sekundę, czyli 1000ms
    Timer1.Interval = 1000
    End Sub
    
    Function ZmienCzas(Czas As Long) As String
    Dim hh, mm, ss As String
    hh = Czas / 3600
    mm = Fix((Czas - (hh * 3600)) / 60)
    ss = Czas Mod 60
    'Zapisanie wyniku do zmiennej (wynik funkcji)
    ZmienCzas = Format(hh, "00") & ":" & Format(mm, "00") & ":" & Format(ss, "00")
    End Function
    
    Private Sub Timer1_Timer()
    'dodajemy wartość do licznika czasu (+1 sekunda)
    sekundy = sekundy + 1
    'wyświetlamy aktualny czas w polu tekstowym Text1
    Text1.Text = ZmienCzas(sekundy)
    End Sub


    To jest kod, który od razy formatuje wartości. Ten który podał mój poprzednik, wstawia w pole tekstowe liczbę naukową, niesformatowaną, co w konsekwencji wcale nie przypomina stopera :) Przy okazji dodałem deklaracje zmiennych i ustawienie timera.
  • #7 1523578
    Bartek_Wosik
    Poziom 27  
    Posty: 1028
    Pomógł: 100
    Ocena: 42
    Problez z tym ze program Piotrka.pxf też nie prawidłowo. Zlacza co prawda sekundy ale po 59 sekundzie nastepuje wyzerowanie stopera i rozpoczecie cyklu na nowo.
    Załączniki:
    • stoper.exe (20 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #8 1524494
    sivex
    Poziom 27  
    Posty: 815
    Pomógł: 113
    Ocena: 25
    U mnie dziallalo prawidlowo. fakt ze ja uzywalem kodu nie do stopera ale do timera, ktory odliczal czas do tylu. Nie mam tu kompilatora ale to jest za prosty temat zeby go tyle ciagnac :) . wieczorkiem zrobimy stoper wraz z setnymi i "Lap Time"

    pozdro
  • REKLAMA
  • #9 1525675
    Bartek_Wosik
    Poziom 27  
    Posty: 1028
    Pomógł: 100
    Ocena: 42
    Co mam zrobić żeby wyświetlało minuty?

    Pozdrawiam :-)
  • Pomocny post
    #10 1525688
    sivex
    Poziom 27  
    Posty: 815
    Pomógł: 113
    Ocena: 25
    Zapomnialem ominac cyfry po przecinku (poprawka podswietlona na czerwono).



    Function ZmienCzas(Czas As Long) As String
    Dim hh, mm, ss As String


    hh = Fix(Czas / 3600)
    mm = Fix((Czas - (hh * 3600)) / 60)
    ss = Czas Mod 60


    'Zeby byly zera przed cyframi pojedynczymi
    If Len(hh) = 1 Then hh = "0" & hh
    If Len(mm) = 1 Then mm = "0" & mm
    If Len(ss) = 1 Then ss = "0" & ss

    'Zapisanie wyniku do zmiennej (wynik funkcji)
    ZmienCzas = hh & ":" & mm & ":" & ss

    End Function


    Zalaczam bo niewiem gdzie problem.
    Zmienilem tylko interval na 100 zeby nie czekac.
    Załączniki:
    • test1.exe (12 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #11 1525707
    Bartek_Wosik
    Poziom 27  
    Posty: 1028
    Pomógł: 100
    Ocena: 42
    Dzięki wszystkim!
  • REKLAMA
  • Pomocny post
    #12 1525731
    sivex
    Poziom 27  
    Posty: 815
    Pomógł: 113
    Ocena: 25
    Jakies zrodelko na szybko.
    reset, setne sekundy i Lap Time

    Nie wiem jak godziny bo mi sie nie chcialo czekac :)
    Pozdrawiam
    Załączniki:
    • Form1.zip (924 Bajtów) Musisz być zalogowany, aby pobrać ten załącznik.
  • #13 1526017
    Bartek_Wosik
    Poziom 27  
    Posty: 1028
    Pomógł: 100
    Ocena: 42
    Dzieki, juz sobie dałem rade.

    Wielkie pozdro !!

Podsumowanie tematu

✨ Dyskusja dotyczy stworzenia stopera w Visual Basic, który wyświetla czas w formacie mm:ss lub hh:mm:ss, zamiast tylko sekund. Zaproponowano funkcje konwertujące liczbę sekund na formatowany ciąg znaków z zerami wiodącymi, np. funkcję ZmienCzas, która dzieli czas na godziny, minuty i sekundy, a następnie formatuje je do postaci "hh:mm:ss". Omówiono integrację z kontrolką Timer, ustawioną na interwał 1000 ms, która co sekundę zwiększa licznik i aktualizuje wyświetlany czas w polu tekstowym. Podkreślono konieczność użycia zmiennej globalnej do przechowywania liczby sekund. Wskazano poprawki dotyczące obliczeń i formatowania, aby uniknąć błędów takich jak zerowanie stopera po 59 sekundach. Zaproponowano także rozszerzenia, takie jak pomiar setnych sekund i funkcję "Lap Time". Kod zawiera przykłady funkcji i procedur Timer1_Timer oraz Form_Load, które umożliwiają implementację stopera z formatowaniem czasu w Visual Basic.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA