VB Anfängerfrage - 0 vor Variable schieben?

.:L

0
Hi

hab mir folgendes zusammengeschnipselt

Code:
        Dim sec, min, h As Integer
        sec = Second(TimeOfDay)
        min = Minute(TimeOfDay)
        h = Hour(TimeOfDay)

        If sec < 0 Then
            sec = "0" & sec
        ElseIf min < 10 Then
            min = "0" & min
        ElseIf h < 10 Then
            h = "0" & h
        End If

        Console.WriteLine(h & ":" & min & ":0" & sec)

Der Code soll eigentlich bewirken, dass nie eine 1stellige Zahl irgendo steht. Allerdings klappt das ganze nicht so recht. Von der Logik her stimmt es, daher meine Frage: Kann ich in der IF-Funktion keine Zeichen an die Varible hängen?

eine andere erklärung ist mir niht eingefallen da
Code:
Console.WriteLine("0" & h & ":" & min & ":0" & sec)
ja funktioniert...

greets
 
Ich hoffe ich versteh dich richtig.
Es geht dir um die Zeit.
Oder um allgemeine Variablen.
Wenn es um die Zeit geht mach es doch einfach so.

Code:
        Dim currentTime As DateTime
        currentTime = TimeOfDay
        Dim strtime As String = currentTime.ToString("hh:mm:ss")
         Console.WriteLine(strtime)

Mfg
schmitti81
 
Code:
 If sec < 0 Then
            sec = "0" & sec
        ElseIf min < 10 Then
            min = "0" & min
        ElseIf h < 10 Then
            h = "0" & h
        End If


besser so? (mit betonung auf die erste Zeile)

Code:
 If sec < 10 Then
            sec = "0" & sec
        ElseIf min < 10 Then
            min = "0" & min
        ElseIf h < 10 Then
            h = "0" & h
        End If
 
Ich hab zwar schon Ewigkeiten kein VB mehr geschrieben aber so sec = "0" & sec weißt du einen Integer einen String zu. Kann nicht gehen,Typkonflikt!
 
Ich kann zwar kein VB, aber mit PHP würde ich es folgendermaßen machen:
Code:
if(strlen($sec)<2) {

$tmp=$sec;
$sec=0.$tmp;
}

Bestimmt gibt es in VB eine verlgeichbare Funktion zu strlen() in PHP.

edit: Bezug nehmend auf den Post von mauralix stelle ich fest, dass das nicht gehen kann o0 sry
 
wenn du unbedingt eine null davor haben willst, probiers mal so:

Code:
sec$ = Second(TimeOfDay)
min$ = Minute(TimeOfDay)
h$ = Hour(TimeOfDay)

if len(sec$)=1 then
   sec$ = "0"+sec$
elseif len(min$) = 1 then
   min$ = "0"+min$
elseif len(h$) = 1 then
   h$ = "0"+h$
end if

console.writeline(h$+":"+min$+":"+sec$)
ich vermute mal das is vb.net o.ä., ich hab im monent leider nur vb5.0 drauf.. konnte's nich testen aber vlt. läufts so

falls Second() / etc. nur numerische werte liefern (war glaub ich allerdings variant) wirds ein bisschen umständlicher. bsp:
Code:
sec$ = Second(TimeOfDay) 'wird zu:
sec$ = ltrim$(str$(Second(TimeOfDay)))
zu den string-operationen: len() liefert dir die länge eines strings (in byte bzw. zeichen)
ltrim$() entfernt führende leerzeichen aus einem string. solche entstehen zb bei der umwandlung von strings in numerische variablen, sofern kein negatives vorzeichen dort steht. alternativ entfernt rtrim$() angehängte leerzeichen und trim$() vor- und nachstehende leerzeichen.
str$() wandelt numerische variablen in strings um.

mfg.
 
Original von 0mega
wenn du unbedingt eine null davor haben willst, probiers mal so:

Code:
sec$ = Second(TimeOfDay)
min$ = Minute(TimeOfDay)
h$ = Hour(TimeOfDay)

if len(sec$)=1 then
   sec$ = "0"+sec$
elseif len(min$) = 1 then
   min$ = "0"+min$
elseif len(h$) = 1 then
   h$ = "0"+h$
end if

console.writeline(h$+":"+min$+":"+sec$)
ich vermute mal das is vb.net o.ä., ich hab im monent leider nur vb5.0 drauf.. konnte's nich testen aber vlt. läufts so

Ich kann zwar kein VB, vermute aber, dass der Code oben nicht funktioniert wenn mehr als eine der Ausgaben nur eine Stelle hat, da in jeder Sprache die ich kenne ein "elseif"-Konstrukt nur dann ausgeführt wird, wenn dass vorhergehende if nicht ausgeführt wurde. Wenn somit bereits die Sekunden nur eine Stelle hätten, würde das dazu führen, dass die Minuten und Stunden gar nicht erst überprüft würden.
 
So ich kann mir das nicht länger mitanschauen^^.
Habe schnell Vb.Net nach über einem Jahr wieder angeworfen.

So gehts und nicht anders ;-)

Code:
        Dim sec As Integer
        Dim strSec As String
        sec = TimeOfDay.Second
        If sec < 10 Then
            strSec = "0" & sec
        Else
            strSec = sec
        End If

        Console.WriteLine(strSec)

Und das wo ich VB.Net nie lernte.
 
Original von Lesco
Ich kann zwar kein VB, vermute aber, dass der Code oben nicht funktioniert wenn mehr als eine der Ausgaben nur eine Stelle hat, da in jeder Sprache die ich kenne ein "elseif"-Konstrukt nur dann ausgeführt wird, wenn dass vorhergehende if nicht ausgeführt wurde. Wenn somit bereits die Sekunden nur eine Stelle hätten, würde das dazu führen, dass die Minuten und Stunden gar nicht erst überprüft würden.
stimmt.. genau deshalb hasse ich es, code zu tippen, ohne ihn auszuprobieren. mein fehler; zu wenig schlaf und zu wenig kaffee heut morgen. löst man das konstrukt in einzelne IFs auf, sollte es aber klappen.
Original von mauralix
So ich kann mir das nicht länger mitanschauen^^.
Habe schnell Vb.Net nach über einem Jahr wieder angeworfen.

So gehts und nicht anders ;-)
hätte ich vielleicht auch mal machen sollen, aber bin zu faul zum neustarten gewesen ~.~ in powerbasic hätte man das wunderbar mit using$ lösen können glaub ich xD

mfg.
 
Code:
Dim sec, min, h As Integer

sec = Second(TimeOfDay)
min = Minute(TimeOfDay)
h = Hour(TimeOfDay)

Console.WriteLine(Format(h,"00") & ":" & Format(min,"00") & ":" & Format(sec,"00"))

Funktioniert das nicht?
 
Original von AaFreak
Code:
Dim sec, min, h As Integer

sec = Second(TimeOfDay)
min = Minute(TimeOfDay)
h = Hour(TimeOfDay)

Console.WriteLine(Format(h,"00") & ":" & Format(min,"00") & ":" & Format(sec,"00"))

Funktioniert das nicht?

So funktionierts prima, danke
 
Gut, dass es klappt, aber mich würde mal interessieren, ob meine Lösung nicht funtkioniert.
Vielleicht probierst du das auch mal.
Komm nicht aus der VB-Welt.
Danke.

Gruß
schmitti81
 
Original von schmitti81
Gut, dass es klappt, aber mich würde mal interessieren, ob meine Lösung nicht funtkioniert.
Vielleicht probierst du das auch mal.
Komm nicht aus der VB-Welt.
Danke.

Gruß
schmitti81

Das wird nich funktionieren :D

Ich sollte h,min und sec ja jeweils in einem string haben....

sonst hätte ich einfach Console.Writeline(TimeOfDay,"00:00:00") geschrieben...
 
Zurück
Oben