mit Datum rechnen

Anfängerfragen zum Programmieren mit PureBasic.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

MrVain hat geschrieben:...

und erhalte in DOS mit

Code: Alles auswählen

echo %errorlevel%
den Wert in Sekunden.
ok, ich klär dich mal auf:

DOS war ein 16bit Betriebssystem das heute nur noch selten benutzt wird.
PureBasic erzeugt 32bit Executables die unmöglich auf einem 16bit System laufen.

Das was du meinst, ist die Consolen-Oberfläche.
die hat mit DOS so wenig zu tun wie Sarotti mit Denzel Washington.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
MrVain
Beiträge: 24
Registriert: 08.03.2009 14:34

Beitrag von MrVain »

Kaeru Gaman hat geschrieben:
MrVain hat geschrieben:...

und erhalte in DOS mit

Code: Alles auswählen

echo %errorlevel%
den Wert in Sekunden.
ok, ich klär dich mal auf:

DOS war ein 16bit Betriebssystem das heute nur noch selten benutzt wird.
PureBasic erzeugt 32bit Executables die unmöglich auf einem 16bit System laufen.

Das was du meinst, ist die Consolen-Oberfläche.
die hat mit DOS so wenig zu tun wie Sarotti mit Denzel Washington.
Gut zu wissen :)

Ja, ich meinte (natürlich) die Consolen-Oberfläche :allright:
MrVain
Beiträge: 24
Registriert: 08.03.2009 14:34

Beitrag von MrVain »

Wenn ich folgendes Format habe:

Code: Alles auswählen

[BANDSICHERUNG]
START = 20.05.2009  1:25:20,07 
ENDE = 20.05.2009  1:25:24,09
wieso klappt diese funktion dann nicht : ??

Code: Alles auswählen

START_ZEIT_FORMAT$ = Mid(START_ZEIT$,7,4) + Mid(START_ZEIT$,4,2) + Mid(START_ZEIT$,1,2) + Mid(START_ZEIT$,12,2) + Mid(START_ZEIT$,15,2) + Mid(START_ZEIT$,18,2)
END_ZEIT_FORMAT$ = Mid(END_ZEIT$,7,4) + Mid(END_ZEIT$,4,2) + Mid(END_ZEIT$,1,2) + Mid(END_ZEIT$,12,2) + Mid(END_ZEIT$,15,2) + Mid(END_ZEIT$,18,2)

If Mid(START_ZEIT_FORMAT$,9,1) = ""
    START_ZEIT_FORMAT$ = Mid(START_ZEIT$,7,4) + Mid(START_ZEIT$,4,2) + Mid(START_ZEIT$,1,2) + "0" + Mid(START_ZEIT$,13,1) + Mid(START_ZEIT$,15,2) + Mid(START_ZEIT$,18,2)
EndIf
If Mid(END_ZEIT_FORMAT$,9,1) = ""
    END_ZEIT_FORMAT$ = Mid(END_ZEIT$,7,4) + Mid(END_ZEIT$,4,2) + Mid(END_ZEIT$,1,2) + "0" + Mid(END_ZEIT$,13,1) + Mid(END_ZEIT$,15,2) + Mid(END_ZEIT$,18,2)
EndIf
Ich möchte einfach nur, dass vor der 1 eine 0 stehen soll und die Formatierung so ändern:
%yyyy%mm%dd%hh%ii%ss
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Code: Alles auswählen

If Mid(START_ZEIT_FORMAT$,9,1) = "" 
ist IMMER False!
ein Ein Zeichen langer sting ist niemals ein Null Zeichen langer String. /:->


also, wie sehen die beiden versionen denn aus...

so:

Code: Alles auswählen

START = 20.05.2009  1:25:20,07 
START = 20.05.2009  13:25:20,07
oder so

Code: Alles auswählen

START = 20.05.2009  1:25:20,07 
START = 20.05.2009 13:25:20,07

... das könnte ein passender Fall für Reguläre Ausdrücke sein...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
MrVain
Beiträge: 24
Registriert: 08.03.2009 14:34

Beitrag von MrVain »

Kaeru Gaman hat geschrieben:

Code: Alles auswählen

If Mid(START_ZEIT_FORMAT$,9,1) = "" 
ist IMMER False!
ein Ein Zeichen langer sting ist niemals ein Null Zeichen langer String. /:->


also, wie sehen die beiden versionen denn aus...

so:

Code: Alles auswählen

START = 20.05.2009  1:25:20,07 
START = 20.05.2009  13:25:20,07
oder so

Code: Alles auswählen

START = 20.05.2009  1:25:20,07 
START = 20.05.2009 13:25:20,07

... das könnte ein passender Fall für Reguläre Ausdrücke sein...
Letzteres:

Code: Alles auswählen

START = 20.05.2009  1:25:20,07
START = 20.05.2009 13:25:20,07
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

na, das ist doch supereasy.

dann ersetz doch zuerst das leerzeichen durch eine Null, und dann schneide den string in grüppchen.

wobei ich noch überlege... man kann doch direkt die trennzeichen lassen, oder?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Kaeru Gaman hat geschrieben:man kann doch direkt die trennzeichen lassen, oder?
yup, kann man

Code: Alles auswählen

In$ = "START = 20.05.2009  1:25:20,07"
;In$ = "START = 20.05.2009 13:25:20,07"

cut1$ = Mid( In$,  9, 10 )   ; das Datum
cut2$ = Mid( In$, 20,  8 )   ; die Uhrzeit

If Left( cut2$, 1 ) = " "        ; wenn space
  cut2$ = "0" + Mid( cut2$, 2 )   ; durch "0" ersetzen
EndIf

Out$ = cut1$ + "#" + cut2$

Debug Out$

DateVal = ParseDate( "%dd.%mm.%yyyy#%hh:%ii:%ss", Out$ )

Debug DateVal

ReOut$ = FormatDate( "%yyyy:%mm:%dd:%hh:%ii:%ss", DateVal )

Debug ReOut$
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
MrVain
Beiträge: 24
Registriert: 08.03.2009 14:34

Beitrag von MrVain »

besten dank :allright:
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

du braucht nicht den Umweg über den Zeitwert gehen, wenn du am ende nur den string haben willst...

aber wenn du wirklich damit was kalkulieren willst, dann ist es bestimmt wirklich sinnvoll, den Zeitwert zu haben nicht einen string.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
MrVain
Beiträge: 24
Registriert: 08.03.2009 14:34

Beitrag von MrVain »

Kaeru Gaman hat geschrieben:du braucht nicht den Umweg über den Zeitwert gehen, wenn du am ende nur den string haben willst...

aber wenn du wirklich damit was kalkulieren willst, dann ist es bestimmt wirklich sinnvoll, den Zeitwert zu haben nicht einen string.
Ich rechne mit dem Zeitwert einfach nur die Differenz aus und gebe diese mit dem EXIT-Status aus.

btw: klappt nun alles wunderbar :)
Antworten