Jump to content

[VB2005][RESOLVIDO] Ajuda com calculos


memyself

Recommended Posts

boas...

eu tou a tentar criar um programa...

mas antes de comecar a por as minhas ideias em pratica...

portanto, numa aplicacao, pus 3 textbox e um botao numa form...

e a experiencia é:

textbox 1  --> insere-se uma hora   (ex: 14:00)

textbox 2  --> insere-se uma hora   (ex: 16:45)

textbox 3  --> apresenta o resultado da soma  (ex: 30:45)

alguém me consegue explicar como posso fazer esta soma de horas ?

porque no que tentei, estava a fazer soma de strings, o que nao e possivel...

agradeco desde ja

cumpz

EDIT: Sera que existe uma solucao para me facilitar este calculo, ou terei de fazer os calculos manualmente (usando left(), mid(), int()....) ?!?!?

Link to comment
Share on other sites

Esta solução parece-me um pouco lame, mas resolve-te o prob

Dim var As String
Dim var2 As String
Dim num() As String
Dim num2() As String
var = textbox1.text
var2 = textbox2.text

num = Split(var, ":", , vbTextCompare)
num2 = Split(var2, ":", , vbTextCompare)

textbox3.text = num(0)+num2(0) & ":" & num(1)+num2(1)

Melhores cumprimentos,João Lopes***Esta mensagem foi escrita ao abrigo do novo Acordo Ortográfico***

Link to comment
Share on other sites

bom, olha para solucionar o teu problema criei 4 labels, e o código k fiz foi este  e funcionou

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim var() As String
        Dim var2() As String
        var = Split(TextBox1.Text, ":", , CompareMethod.Text)
        Label1.Text = var(0)
        Label2.Text = var(1)
        var2 = Split(TextBox2.Text, ":", , CompareMethod.Text)
        Label3.Text = var2(0)
        Label4.Text = var2(1)
        Dim sum1 As Integer = Label1.Text
        Dim sum2 As Integer = Label2.Text
        Dim sum3 As Integer = Label3.Text
        Dim sum4 As Integer = Label4.Text

        TextBox3.Text = sum1 + sum3 & ":" & sum2 + sum4
    End Sub

*editado*

é verdade eu criei as labels pra ver se estava a dar certo, de uma vez k dá, podes substituí-las por outras 4 variáveis, ou um array 😛

*editado*

já agora deixo aqui o outro código funcional, já com a array

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim var() As String
        Dim var2() As String
        Dim sum(4) As Integer
        var = Split(TextBox1.Text, ":", , CompareMethod.Text)
        sum(1) = var(0)
        sum(2) = var(1)
        var2 = Split(TextBox2.Text, ":", , CompareMethod.Text)
        sum(3) = var2(0)
        sum(4) = var2(1)
        TextBox3.Text = sum(1) + sum(3) & ":" & sum(2) + sum(4)
    End Sub

Melhores cumprimentos,João Lopes***Esta mensagem foi escrita ao abrigo do novo Acordo Ortográfico***

Link to comment
Share on other sites

como estava a calcular, o problema agora e que obtenho um resultado de 28:75.... 😛

por isso eu estava a perguntar se nao existe um funcao tipo hour ou algo do genero...para saber automaticamente que tem de substituir para a hora seguinte a seguir aos 60 minutos....

ou terei de fazer isso manualmente ?!?

(estou so a pedir um sim ou nao ....lol)

e ja agora, podes explicar em texto o que a funcao split faz  ?!?

é que nunca tinha ouvido falar nela !!!  😉

desde ja agradeco a preciosa ajuda...

cumpz

Link to comment
Share on other sites

Pra começar deixo aki o código k te acrescenta mais 1 hora após 60 minutos

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim var() As String
        Dim var2() As String
        Dim sum(4) As Integer
        var = Split(TextBox1.Text, ":", , CompareMethod.Text)
        sum(1) = var(0)
        sum(2) = var(1)
        var2 = Split(TextBox2.Text, ":", , CompareMethod.Text)
        sum(3) = var2(0)
        sum(4) = var2(1)
        Dim horas As Integer = sum(1) + sum(3)
        Dim minutos As Integer = sum(2) + sum(4)
        While minutos > 59
            horas = horas + 1
            minutos = minutos - 60
        End While
        If minutos < 10 Then
            TextBox3.Text = horas & ":0" & minutos
        Else
            TextBox3.Text = horas & ":" & minutos
        End If
    End Sub

Agora, o k a função split faz eh dividir uma string pela string desejada

do género, tu keres dividir 14:15 pelos ":", e guardares os dois valores num array separado.

A funçao split permite-te isso mesmo, grava o 14 na string(0) e o 15 na string(1), se tivesses qq coisa como 15:16:17:18

a função split iria gravar string(0) = 15, string(1) = 16, string(2) = 17 e string(3) = 18...

Espero que tenhas percebido 😉

É verdade, esqueci-me de voltar a dizer, acho k este exemplo eh um bocado lame, mas como entrei nesta cena de programar praí à 2as semanas n se pode exegir muito de mim 😛

deve haver outra maneira de fazer isto, acrescentei ao teu código (se ainda n tiveres reparado), quando os minutos são  menores k 10, ele adiciona o 0 antes dos minutos, tipo:

12:01 + 12:01 = 24:02

*editado*

O código tinha um erro aki

        While minutos > 60

alterei para > 59, porque se o valor for exactamente 60 ele apresenta 60

e 60 minutos é +1 hora 🙂

Sorry, repara que tiro na mesma os 60 minutos à variável minutos, tenho de fazer isso para tirar 1 hora dos minutos.

Melhores cumprimentos,João Lopes***Esta mensagem foi escrita ao abrigo do novo Acordo Ortográfico***

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.