Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [VB6]calcolo velocità

    ciao a tutti.
    ho realizzato un cronometro in visual basic ed ora volevo avendo il tempo calcolarmi la velocità in quel tratto.
    il tempo è in label1.label ed è 00.00.00,000 poi creo un text2.text dove inserisco i metri e quindi la velocità è:
    tex3.text = (text2.text/label1.label) * 3.6 (in km/h)
    però mi da errore di debug perchè? ( il tempo l'ho messo 00.00.00,000 per far vedere che ci sono anche i millesimi però e norm che non divido per zero!)

  2. #2

    Re: [VB6]calcolo velocità

    Originariamente inviato da Desmo16
    mi da errore
    quale errore?
    Originariamente inviato da Desmo16
    ciao a tutti.
    ho realizzato un cronometro in visual basic ed ora volevo avendo il tempo calcolarmi la velocità in quel tratto.
    il tempo è in label1.label ed è 00.00.00,000 poi creo un text2.text dove inserisco i metri e quindi la velocità è:
    tex3.text = (text2.text/label1.label) * 3.6 (in km/h)
    però mi da errore di debug perchè? ( il tempo l'ho messo 00.00.00,000 per far vedere che ci sono anche i millesimi però e norm che non divido per zero!)
    Il tempo è zero o no?

  3. #3
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Ciao Luciano79,
    La proprietà di Lbl e Caption e non label
    tex3.text = (text2.text/label1.label ) * 3.6 '(in km/h)
    Poi devi specificare che si tratta di un numero (IsNumeric o altro).
    In fine attenzione alla divisione per 0, che chiaramente genera un errore.
    LM

  4. #4
    grazie LMondi ma non era mia la domanda


  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Non puoi fare operazioni con dati in quel formato !!!
    Tu nella label hai una stringa, devi convertirla in un formato numerico in secondi per poterla utilizzare.
    Allora tu ti scrivi una funzione di conversione tipo così:
    codice:
    Private Function ToSeconds(str As String) As Double
    ToSeconds = Val(Mid$(str, 1, 2)) * 3600 + Val(Mid$(str, 4, 2)) * 60 + Val(Mid$(str, 7, 2) + "." + Mid$(str, 10, 3))
    End Function
    E fai
    codice:
    Text3.text = Str(Val(Text2.Text)/ToSeconds(Label1.Caption) * 3.6)
    Così dovrebbe funzionare

  6. #6
    risolto grazieeeeeeeee

  7. #7
    Originariamente inviato da pprllo
    Non puoi fare operazioni con dati in quel formato !!!
    Tu nella label hai una stringa, devi convertirla in un formato numerico in secondi per poterla utilizzare.
    Allora tu ti scrivi una funzione di conversione tipo così:
    codice:
    Private Function ToSeconds(str As String) As Double
    ToSeconds = Val(Mid$(str, 1, 2)) * 3600 + Val(Mid$(str, 4, 2)) * 60 + Val(Mid$(str, 7, 2) + "." + Mid$(str, 10, 3))
    End Function
    E fai
    codice:
    Text3.text = Str(Val(Text2.Text)/ToSeconds(Label1.Caption) * 3.6)
    Così dovrebbe funzionare
    Può pprllo
    In VB6 non puoi fare calcoli con variabili stringhe, ma con contenuti di text e label si, vengono riconosciuti in automatico e convertiti! Riconosce anche quel formato "00.00.00,000" (provare per credere)

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Si però dà risultati sballati facendolo direttamente. Almeno a me, se gli faccio fare 10 km in 2 ore con il metodo "diretto", mi da 1,8 (che è errato), mentre se glielo faccio fare con la "conversione esplicita" in mezzo mi da 5 (che è esatto). Cioè lui non fa la conversione sessagesimale, ma molto semplicemente 02.00.00,000 lo legge come 20000,000. E non da un risultato esatto.
    Poi magari è la mia versione di VB6 che non funziona bene ...

  9. #9
    Originariamente inviato da pprllo
    Poi magari è la mia versione di VB6 che non funziona bene ...
    Hai ragione... è la mia testa che non funziona bene

  10. #10
    Originariamente inviato da pprllo
    Si però dà risultati sballati facendolo direttamente. Almeno a me, se gli faccio fare 10 km in 2 ore con il metodo "diretto", mi da 1,8 (che è errato), mentre se glielo faccio fare con la "conversione esplicita" in mezzo mi da 5 (che è esatto). Cioè lui non fa la conversione sessagesimale, ma molto semplicemente 02.00.00,000 lo legge come 20000,000. E non da un risultato esatto.
    Poi magari è la mia versione di VB6 che non funziona bene ...
    vabè tanto a me interessano massimo fino a 4 4 secondi.
    l'unico problema è che il risultato mi esce lunghissimo dopo la virgola.come posso avere un risultato con al massimo tre cifre dopo la virgola?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.