Close
Duke shfaqur rezultatin -9 deri 0 prej 9
  1. #1
    If i ruled the world... Maska e GinoTheGodFather
    Anėtarėsuar
    01-02-2004
    Vendndodhja
    Shqiperi
    Postime
    311

    VB - Problem me oren ne VB6.0

    Do doja ndihmen e ndonjerit per problemin tim.
    Supozojme qe ne Form_Load, Text1.Text merr vleren: Text1.Text = Format(Time). Une dua qe nese nje Text2.Text ti jap vlera numerike, pas shtypjes se nje butoni ne Text3.Text te mblidhet vlera e Text1 me Text2. Me poshte po jap nje shembull:

    Supozojme se Text1 merr vleren 17:55:25 (ora momentalisht). Text2 i jap vleren 2 (2 ore). Dhe pasi te shtypet nje Command1 psh, ne Text3.Text te dali 19:55:25 (dmth te behet mbledhia. tani text2.text mund te kete vlere oret psh, por mund te kete dhe minutat, dhe sekondat.) Di ndonjeri ndonje menyre. Gjithe te mirat
    "Me??? I always tell the truth, even when I lie..."

  2. #2
    i/e regjistruar Maska e Borix
    Anėtarėsuar
    17-01-2003
    Postime
    2,316
    OK, po bej supozimet e meposhtme.

    Se pari, ne kutizen Text2 ti do te futesh vetem nje number pozitiv te plote, i cili perfaqeson vetem numrin e oreve per t'iu shtuar kohes ne kutizen Text1. Supozojme gjithashtu, se koha jepet ne formatin 24 ore.

    Kodi ne Form_Load:
    Kodi:
    Private Sub Form_Load()
    ' Inicializojme kutizen Text1 me kohen aktuale:
       Text1.Text = Time
    End Sub
    Kodi per eventin Click te butonit Command1:
    Kodi:
    Private Sub Command1_Click()
       Dim hr As Integer, sum As Integer
       
       ' merr vleren e ores nga kutiza Text1.Text:
       hr = DatePart("h", CDate(Text1.Text))
       
       ' Shtoji hr vleren e kutizes Text2 duke marre modulin ne 24 te shumes:
       sum = (hr + CInt(Text2.Text)) Mod 24
       
       ' Paraqit oren e re:
       Text3.Text = sum & ":" & DatePart("n", CDate(Text1.Text)) & ":" & DatePart("s", CDate(Text1.Text))
       
    End Sub
    Pra, fale funksionit te VB DatePart, une marr vetem oren nga koha e dhene duke perdorur masken "h". CDate eshte operator kasti ne VB. Me tej, marr vleren (numer i plote - integer) ne kutizen Text2 dhe ia shtoj vleres ne variablin hr. Pershembull, nese ora eshte 8 e mengjezit dhe vlera ne kutizen Text2 eshte 24, atehere ora e re eshte 24+8=32. Per kete arsye, marrim modulin-24 te 32, i cili eshte i barabarte me mbetjen pas pjesetimit te plote te 32 nga 24: 32/24 = 0 mbetja 8. Pra ora e re qe do te shfaqet ne kutizen Text3 eshte 8 : min :sek , ku min (minuta) dhe sek (sekonda) jane te paprekura dhe te njejta me ato ne Text1.

    Shenim: Tek pjesa e fundit e kodit per Command1_Click, funksioni DatePart permban nje maske "n". Kjo e fundit perfaqeson minutat. Nuk perdoret maska "m" sepse do te perfaqesonte muajt.

    Besoj se kam qene i qarte. Por, nese ne kutizen Text2 te kerkohet te fusesh edhe minuta edhe sekonda ne formatin hh: mm: ss, atehere nje manipulim stringjesh duke perdorur serish algjeber modulare do ta zgjidhte problemin:

    Kodi:
    Private Sub Command1_Click()
       Dim hr As Integer, min as integer, sek as integer, temp as integer
       
       ' merr vleren e kohes nga kutiza Text1.Text:
       hr = 0 : min = 0 : sek = 0
       hr = DatePart("h", CDate(Text1.Text))
       min = DatePart("n", CDate(Text1.Text))
       sek = DatePart("s", CDate(Text1.Text))
    
       ' Shto vlerat nje nga nje:
       sek = (sek + Cint(DatePart("s", Cdate(Text2.Text))))   ' shto sekondat 
       if sek>59 then
          temp = sek mod 60
          min = min + sek\60   ' shenim: '\' tregon pjesetim te plote (integer)
          sek = temp
       end if
    
       min = (min + Cint(DatePart("n", Cdate(Text2.Text)))) Mod 60   ' shto minutat
       if min>59 then
         temp = min mod 60
         hr = hr + min\60
         min = temp
       end if
       
       ' Paraqit oren e re:
       Text3.Text = hr & ":" & min & ":" & sek
       
    End Sub
    Normalisht, qe te sigurohesh se ne Text2 perdoruesi ka dhene oren me minuta dhe me sekonda, atehere merr nje funksion Boolean dhe kontrollo sa karaktere ":" permban stringu. Pra, nese permban dy, atehere te eshte dhene ora ne formen hh: mm: ss, nese permban nje, atehere bej marreveshjen qe te eshte dhene hh: mm, nese nuk te eshte dhene asnje, atehere konsideroje si ore.
    Ndryshuar pėr herė tė fundit nga Borix : 28-05-2007 mė 04:29
    "The rule is perfect: in all matters of opinion our adversaries are insane." (M. Twain)

  3. #3
    i/e regjistruar Maska e Borix
    Anėtarėsuar
    17-01-2003
    Postime
    2,316
    Harrova dicka te fundit, manipulimin e vleres hr:

    Pas end-if te fundit ne kodin e mesiperm, shto kete kod:
    Kodi:
     hr = (hr + CInt(DatePart("h", CDate(Text2.Text)))) Mod 24
    .

    Po te jap dhe nje shembull:

    Kutiza Text1:
    Kodi:
    13:20:40
    Kutiza Text2:
    Kodi:
    10:50:30
    Mbledhja e tyre vijon ne kete menyre:

    Variabli sek, fillimisht zero, do te marre vleren e sekondave te kohes ne kutizen Text1: sek=40. Me tej, kesaj vlere do t'i shtohen sekondat ne kohen e kutizes Text2: sek = 40+ 30 = 70. Meqenese 70>59, atehere variabli temp do te kete vleren 70 mod 60 ose temp=10. Por, variablit min duhet t'i shtojme aq minuta sa nda dalin nga mbledhja e sekondave, ne rastin tone min = 70\60 = 1. Ne fund, variabli sek merr vleren e temp, pra 10.

    Ndjekim te njejten procedure per minutat dhe oret, dhe shuma perfundimtare eshte:
    Kodi:
    24:11:10
    Ne baze te modifikimit tone te mesiperm, ora do te paraqitej si:
    Kodi:
    0:11:10
    ...

    Ne kodin e mesiperm, kam shtuar gabimisht 'Mod 60' tek seksioni i minutave. Ajo duhet hequr. Gjithesesi, me poshte eshte edhe nje here kodi i modifikuar:
    Kodi:
    Private Sub Command1_Click()
          Dim hr As Integer, min As Integer, sek As Integer, temp As Integer
       
       ' merr vleren e kohes nga kutiza Text1.Text:
       hr = 0: min = 0: sek = 0
       hr = DatePart("h", CDate(Text1.Text))
       min = DatePart("n", CDate(Text1.Text))
       sek = DatePart("s", CDate(Text1.Text))
    
       ' Shto vlerat nje nga nje:
       sek = (sek + CInt(DatePart("s", CDate(Text2.Text))))   ' shto sekondat
       If sek > 59 Then
          temp = sek Mod 60
          min = min + sek \ 60 ' shenim: '\' tregon pjesetim te plote (integer)
          sek = temp
       End If
    
       min = (min + CInt(DatePart("n", CDate(Text2.Text))))   ' shto minutat
       If min > 59 Then
         temp = min Mod 60
         hr = hr + min \ 60
         min = temp
       End If
       
       hr = (hr + CInt(DatePart("h", CDate(Text2.Text)))) Mod 24
       
       ' Paraqit oren e re:
       Text3.Text = hr & ":" & min & ":" & sek
    End Sub
    "The rule is perfect: in all matters of opinion our adversaries are insane." (M. Twain)

  4. #4
    If i ruled the world... Maska e GinoTheGodFather
    Anėtarėsuar
    01-02-2004
    Vendndodhja
    Shqiperi
    Postime
    311
    Shume faleminderit nga ana jote Borix. Tani do filloj ti shikoj nga fillimi dhe te shof si do ecin gjerat. Dhe nje here te falenderoj shume. Gjithe te mirat.
    "Me??? I always tell the truth, even when I lie..."

  5. #5
    If i ruled the world... Maska e GinoTheGodFather
    Anėtarėsuar
    01-02-2004
    Vendndodhja
    Shqiperi
    Postime
    311
    Borix ishit shume i sakte ne saktesine e kodit tuaj, ju falenderoj shume. Desha te di dhe dicka te fundit. Oren ne kompjuter e kam te tipit HH : mm : ss. Kur bej veprime me kodin e mesiperm, Text1.Text shfaqet si 00:01:35 le te themi, Text2.Text i jap vleren 2 (ore) ndersa shuma e tyre paraqitet me nje tjeter format ore: 2:1:35 (dmth nga ana matematikore veprimet jane ne rregull ndersa nga menyra se si shfaqet, mungon nje zero). Ke ndonje ide ku mund te qendroje problemi? Gjithe te mirat dhe shume faleminderit per interesimin tend.
    "Me??? I always tell the truth, even when I lie..."

  6. #6
    i/e regjistruar
    Anėtarėsuar
    12-06-2006
    Vendndodhja
    Redmond, WA, USA
    Postime
    181
    ' Paraqit oren e re:
    Text3.Text = Format(hr, "00") & ":" & Format(min, "00") & ":" & Format(sek, "00")

    Per prezentimin e dates dhe ores (e jo per te llogaritur) me mire eshte te marresh formatin e zgjedhur nga Regional Settings per shfrytezuesin e aktiv.

  7. #7
    i/e regjistruar Maska e Borix
    Anėtarėsuar
    17-01-2003
    Postime
    2,316
    E ka shpjeguar drejt Agroni, jane klecka te funksionit Format...

    Edhe dicka: Kur ne Text2 ti fut nje numer, bie fjala numrin 2, me mendimin se po fut numrin e oreve per te shtuar, kodi nuk ka ndonje logjike eksplicite per ta kuptuar qe eshte ore. Prandaj, merr funksionin FORMAT, dhe para se te shtosh kohet, formato kutizen Text2 si me poshte:

    Kodi:
       If count = 0 Then   ' nuk ka ':'
          Text2.Text = Text2.Text & ":00:00"
       ElseIf count = 1 Then ' u gjet nje ':'
          Text2.Text = Format(Text2.Text, "hh:mm") & ":00"
       Else
          Text2.Text = Format(Text2.Text, "hh:mm:ss")
       End If
    Nese ti fut vleren '2' ne kutizen Text2, atehere pjesa e pare e IF-it te mesiperm do ta konsideroje si ore. Nese ti fut '2:1', atehere pjesa tjeter e IF-it do ta ktheje ne '02:01:00' fale funksionit FORMAT. Po te fusesh '2:2:2', kjo do te konsiderohet si '02:02:02'. Ne kete menyre, ti shmang cdo lloj keqkuptimi dhe gabimi ne percaktimin e kohes. Edhe nje here tjeter kodi i tere per eventin Command1_Click:

    Kodi:
    Private Sub Command1_Click()
       Dim hr As Integer, min As Integer, sek As Integer, temp As Integer
       Dim count As Integer, i As Integer, strTemp As String
       
       count = 0: i = 1
       strTemp = Text2.Text
       
       While (i < Len(strTemp) And i <> 0)
          i = InStr(i, Text2.Text, ":")
          Text2.Text = Mid$(Text2.Text, i + 1, Len(Text2.Text) - i)
          count = count + 1
       Wend
       
       Text2.Text = strTemp
       
       If count = 0 Then   ' nuk ka ':'
          Text2.Text = Text2.Text & ":00:00"
       ElseIf count = 1 Then ' u gjet nje ':'
          Text2.Text = Format(Text2.Text, "hh:mm") & ":00"
       Else
          Text2.Text = Format(Text2.Text, "hh:mm:ss")
       End If
       
       ' merr vleren e kohes nga kutiza Text1.Text:
       hr = 0: min = 0: sek = 0
       hr = DatePart("h", CDate(Text1.Text))
       min = DatePart("n", CDate(Text1.Text))
       sek = DatePart("s", CDate(Text1.Text))
    
       ' Shto vlerat nje nga nje:
       sek = (sek + CInt(DatePart("s", CDate(Text2.Text))))   ' shto sekondat
       If sek > 59 Then
          temp = sek Mod 60
          min = min + sek \ 60 ' shenim: '\' tregon pjesetim te plote (integer)
          sek = temp
       End If
    
       min = (min + CInt(DatePart("n", CDate(Text2.Text))))   ' shto minutat
       If min > 59 Then
         temp = min Mod 60
         hr = hr + min \ 60
         min = temp
       End If
       
       hr = (hr + CInt(DatePart("h", CDate(Text2.Text)))) Mod 24
       
       ' Paraqit oren e re:
       Text3.Text = Format(hr, "00") & ":" & Format(min, "00") & ":" & Format(sek, "00")
    End Sub
    Ndryshuar pėr herė tė fundit nga Borix : 30-05-2007 mė 08:31
    "The rule is perfect: in all matters of opinion our adversaries are insane." (M. Twain)

  8. #8
    If i ruled the world... Maska e GinoTheGodFather
    Anėtarėsuar
    01-02-2004
    Vendndodhja
    Shqiperi
    Postime
    311
    Ishe shume i sakte. Edhe nje here te falenderoj sinqerisht. Gjithe te mirat.
    "Me??? I always tell the truth, even when I lie..."

  9. #9
    i/e regjistruar Maska e hot_prinz
    Anėtarėsuar
    29-05-2007
    Vendndodhja
    Frankfurt
    Postime
    9,878
    Pershendetje,

    ja edhe nje menyre tjeter, e detyrueshme eshte qe koha shtese te shenohet si 2:12:34 (oret : minutat : sekondat), ne te kunderten pasojne gabime.



    Dim t1

    Private Sub Form_Load()
    t1 = Time
    Text1.Text = t1
    Text2.Text = ""
    Text3.Text = ""
    End Sub

    Private Sub Command1_Click()
    Dim tArray() As String
    tArray = Split(Text2.Text, ":")
    Text3.Text = Format$(DateAdd("h", CInt(tArray(0)), t1), "hh:nn:ss")
    Text3.Text = Format$(DateAdd("n", CInt(tArray(1)), CDate(Text3.Text)), "hh:nn:ss")
    Text3.Text = Format$(DateAdd("s", CInt(tArray(2)), CDate(Text3.Text)), "hh:nn:ss")
    End Sub

Tema tė Ngjashme

  1. Pėrgjigje: 476
    Postimi i Fundit: 23-01-2024, 07:38
  2. Kur'ani dhe Bibla (Analizė)
    Nga Shpresmiri nė forumin Toleranca fetare
    Pėrgjigje: 84
    Postimi i Fundit: 31-07-2010, 11:45
  3. Serbėt e konsiderojnė 'rraciste' teorinė e vazhdimėsisė Iliro-Shqiptare
    Nga Qafir Arnaut nė forumin Ēėshtja kombėtare
    Pėrgjigje: 21
    Postimi i Fundit: 06-02-2007, 23:04
  4. Ēėshtja Ēame
    Nga Eni nė forumin Ēėshtja kombėtare
    Pėrgjigje: 154
    Postimi i Fundit: 25-03-2005, 19:56
  5. Kisha Serbe dhe urrejtja ne Ballkan
    Nga Hyllien nė forumin Toleranca fetare
    Pėrgjigje: 235
    Postimi i Fundit: 30-08-2004, 22:33

Regullat e Postimit

  • Ju nuk mund tė hapni tema tė reja.
  • Ju nuk mund tė postoni nė tema.
  • Ju nuk mund tė bashkėngjitni skedarė.
  • Ju nuk mund tė ndryshoni postimet tuaja.
  •