+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 9 su 9

Dividere un valore stringa per un timespan

  1. #1
    magili53 non è in linea Novello
    Post
    25
    Like Inviati  
    0
    Like Ricevuti  
    0
    Buongiorno a tutti, con visual studio 2019 ho sviluppato un programmino che serve per calcolare la velocità, ma non riesco a far eseguire un conteggio perchè mi ritrovo un dato stringa da dividere con un dato timespan. Il dato stringa equivale alla distanza in Km mentre il timespan equivale al tempo. Il problema è che se divido la distanza per il tempo mi restituisce il numero intero (ora) e non tiene conto dei minuti. E' possibile risolvere questo problema? Allego il file che ho sviluppato. Ringrazio anticipatamente per le Vostre risposte.

            Public Class Form1
        Dim tempo As New System.TimeSpan
        Dim veloci As String
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim x() As String
            Dim y() As String
            TextBox1.Show()
            Try
                x = Split(TextBox1.Text, ":")
                Dim orapa = New System.TimeSpan(x(0), x(1), x(2))
                y = Split(TextBox2.Text, ":")
                Dim oraarr = New System.TimeSpan(y(0), y(1), y(2))
                Label1.Text = orapa.ToString
                Label2.Text = oraarr.ToString
                tempo = oraarr.Subtract(orapa)
                Label3.Text = tempo.ToString
                veloci = TextBox3.Text / Val(tempo.ToString)
                Label6.Text = veloci
            Catch ex As Exception
                MessageBox.Show("Errore nell'inserimento orario! Ripetere", "ATTENZIONE!", MessageBoxButtons.OK) : Exit Sub
            End Try
        End Sub
    
    Esempio se inserisco un tempo di partenza: 08:00:00 e di arrivo 08:58:00 ed una distanza di 65Km, il risultato della velocità dovrebbe essere di 112Km/h mentre non mi da nessun risultato, inserendo un tempo maggiore esempio: 08:00:00 - 09:15:00 e una distanza di 90Km mi restituisce 90Km/h invece di 78,26Km/h, legge solo l'intero.

    Spero si possa risolvere grazie ancora.
    Ultima modifica di AntonioG; 18-01-2021 13:52  Motivo: Tag CODE per il codice

  2. #2
    Sgrubak ora è in linea Scribacchino
    Post
    598
    Like Inviati  
    11
    Like Ricevuti  
    12
    Beh non puoi fare una divisione tra stringhe... Converti i due valori in Double e poi fai la divisione. Anche la variabile [veloci] dovrà essere un Double.

  3. #3
    magili53 non è in linea Novello
    Post
    25
    Like Inviati  
    0
    Like Ricevuti  
    0
    ok ci provo e faccio sapere

  4. #4
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,491
    Blogs
    5
    Like Inviati  
    6
    Like Ricevuti  
    34
    Quote Originariamente inviato da magili53 Visualizza il messaggio
    Esempio se inserisco un tempo di partenza: 08:00:00 e di arrivo 08:58:00 ed una distanza di 65Km, il risultato della velocità dovrebbe essere di 112Km/h
    Sicuro? Veramente dovrebbe essere di 67,24 Km/h

    inserendo un tempo maggiore esempio: 08:00:00 - 09:15:00 e una distanza di 90Km mi restituisce 90Km/h invece di 78,26Km/h
    Veramente dovrebbe essere di 72 Km/h.

    Già parti da calcoli sbagliati.

    Poi è evidente che non puoi dividere delle stringhe. Trasforma tutto in secondi e fai i semplici calcoli. Ad esempio, nel secondo caso

            Dim tsS As TimeSpan = TimeSpan.Parse("08:00:00")
            Dim tsE As TimeSpan = TimeSpan.Parse("09:15:00")
            Dim totS As Long = tsE.TotalSeconds - tsS.TotalSeconds
            Dim dist As Double = 90.0
            Dim vel As Double = dist / (totS / 3600.0)
    
            MessageBox.Show(vel.ToString("0.00") + " Km/h")
    
    ℹ️ Leggi di più su AntonioG ...

  5. #5
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,491
    Blogs
    5
    Like Inviati  
    6
    Like Ricevuti  
    34
    @magili53 ... occhio al nostro Regolamento e alla regola che vieta il Crossposting ...
    Ultima modifica di AntonioG; 18-01-2021 15:17 
    ℹ️ Leggi di più su AntonioG ...

  6. #6
    Sgrubak ora è in linea Scribacchino
    Post
    598
    Like Inviati  
    11
    Like Ricevuti  
    12
    Nulla da eccepire a quanto chiarito da Antonio.
    Userei direttamente la proprietà TotalHours al posto della TotalSeconds
    Dim vel As Double = dist / (tsE.TotalHours-tsS.Totalhours)
    

  7. #7
    magili53 non è in linea Novello
    Post
    25
    Like Inviati  
    0
    Like Ricevuti  
    0
    Perchè il risultato è sbagliato? velocità=km/tempo quindi: 90/1.15=78,26
    comunque grazie a tutti per le risposte, appena posso, proverò e farò sapere.

  8. #8
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,491
    Blogs
    5
    Like Inviati  
    6
    Like Ricevuti  
    34
    No, non 1.15 ma 1 ora e 15 minuti, quindi 1 ora e 1/4, che in decimale è 1,25. Quindi 90/1.25 => 72
    Ultima modifica di AntonioG; 18-01-2021 22:19 
    ℹ️ Leggi di più su AntonioG ...

  9. #9
    magili53 non è in linea Novello
    Post
    25
    Like Inviati  
    0
    Like Ricevuti  
    0
    Scusa Antonio hai perfettamente ragione mi sono confuso, sai l'età
    ho provato i vostri suggerimenti e funzionano benissimo, vi ringrazio ancora
    e porgo cordiali saluti a tutti, grazie ancora
    problema risolto

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Format TimeSpan
    Da BLUES nel forum Visual Basic .Net
    Risposte: 2
    Ultimo Post: 13-01-2015, 21:59
  2. [delphi xe3]: convertire stringa in valore
    Da kar64 nel forum Delphi
    Risposte: 2
    Ultimo Post: 31-03-2013, 12:25
  3. stringa sql valore boolean
    Da massimo74rn nel forum ASP 3, ASP .Net
    Risposte: 2
    Ultimo Post: 16-09-2008, 16:11
  4. Valore aritmetico da stringa
    Da vincenzo70r nel forum Visual Basic 6
    Risposte: 2
    Ultimo Post: 04-05-2006, 13:58
  5. come dividere una stringa
    Da ben030 nel forum Visual Basic 6
    Risposte: 2
    Ultimo Post: 08-04-2006, 00:23