memyself Posted November 17, 2007 at 04:53 PM Report Share #148087 Posted November 17, 2007 at 04:53 PM 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 More sharing options...
Cybernavigator Posted November 17, 2007 at 05:11 PM Report Share #148093 Posted November 17, 2007 at 05:11 PM 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 More sharing options...
memyself Posted November 17, 2007 at 05:52 PM Author Report Share #148106 Posted November 17, 2007 at 05:52 PM nao me esta a dar certo esse codigo... quando corro o prog e clico no botao para obter o resultado, da-me um erro a dizer "Index was outside the bounds of the array.", na parte a vermelho do calculo: textbox3.text = num(0)+num2(0) & ":" & num(1)+num2(1) cumpz Link to comment Share on other sites More sharing options...
Cybernavigator Posted November 17, 2007 at 06:07 PM Report Share #148113 Posted November 17, 2007 at 06:07 PM 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 More sharing options...
memyself Posted November 17, 2007 at 07:46 PM Author Report Share #148150 Posted November 17, 2007 at 07:46 PM 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 More sharing options...
Cybernavigator Posted November 17, 2007 at 08:28 PM Report Share #148165 Posted November 17, 2007 at 08:28 PM 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 More sharing options...
memyself Posted November 17, 2007 at 09:13 PM Author Report Share #148177 Posted November 17, 2007 at 09:13 PM yah... eu tinha reparado nisso... bem... obrigadao pela ajuda... agora vou tratar de introduzir os limites de introducao nas textboxes (nao inserir mais de 59 minutos por exemplo) obrigado pela explicacao da funcao split... agora que ja sei, posso usa-la no futuro... cumpz Link to comment Share on other sites More sharing options...
Cybernavigator Posted November 17, 2007 at 09:28 PM Report Share #148180 Posted November 17, 2007 at 09:28 PM Podes também criar mais um if para se horas > 23, e apresentas 1 dias 1:02 por exemplo 😛 cumpz... fica Melhores cumprimentos,João Lopes***Esta mensagem foi escrita ao abrigo do novo Acordo Ortográfico*** Link to comment Share on other sites More sharing options...
Ivo Pereira Posted November 17, 2007 at 10:18 PM Report Share #148191 Posted November 17, 2007 at 10:18 PM e depois de isto tudo acrescenta [RESOLVIDO] no topico 😛 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now