Seite 2 von 5

Verfasst: 22.05.2009 12:34
von RSBasic

Verfasst: 22.05.2009 12:37
von Andesdaf
RSBasic hat geschrieben:Siehe oben: http://www.purebasic.fr/german/viewtopi ... 409#245409
ich trottel... egal.

> ... ich denke mir nur, in die Help wird er schon geschaut haben, aber der Unterschied zwischen
Dann muss er nochmal genau schauen und die Parameter überprüfen.

Verfasst: 22.05.2009 18:55
von KeyKon
Ich meinte auch mehr diese Zeile

Code: Alles auswählen

ParseDate("%dd.%mm.%yyyy %hh:%ii:%ss", $START_ZEIT) 

Verfasst: 25.05.2009 10:51
von MrVain
Vielen Dank für eure Antworten.

Mein Code sieht nun so aus:

Code: Alles auswählen

Global  INI_Datei$ = ProgramParameter()
Global  PGroup$ = ProgramParameter()
Global  START_ZEIT$
Global  END_ZEIT$
Global  ERGEBNIS$


Procedure Read_INI_Datei(iac)

; Lesen der Log-Datei           

If OpenPreferences(INI_Datei$)

        PreferenceGroup(Pgroup$)     
        START_ZEIT$       = ReadPreferenceString("START", "START")    
        END_ZEIT$         = ReadPreferenceString("ENDE", "ENDE")
    
Else
     MessageRequester("Error", "Fehler beim Lesen der TXT-Datei ")
EndIf

          

EndProcedure





OpenConsole()





iac = 0
Read_INI_Datei(iac)
iac = 1

;PrintN("Start-Zeit:     " + START_ZEIT$);
;PrintN("End-Zeit:       " + END_ZEIT$);

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)

start_zeit = ParseDate("%yyyy%mm%dd%hh%ii%ss", START_ZEIT_FORMAT$)
end_zeit   = ParseDate("%yyyy%mm%dd%hh%ii%ss", END_ZEIT_FORMAT$)

zeit_sek   = end_zeit - start_zeit


;Debug Date(START_ZEIT_FORMAT$)
;S2$ = ParseDate("%dd.%mm.%yyyy %hh:%ii:%ss", $START_ZEIT) 
;PrintN("Zeit: " +Str(zeit_sek))
;Input()
End zeit_sek
Das klappt auch alles einwandfrei. Da einzige Problem ist, dass die %time% Variable in DOS nachts nur einstellig ist.
Also 1 Uhr nachts bedeutet 1:00
PureBasic benötigt in diesem Falle jedoch eine 0 vor der 1. Wie mache ich dies am einfachsten?

Verfasst: 25.05.2009 10:52
von Kaeru Gaman
schau dir mal RSet an...

allerdings bezweifle ich, dass du ein PureBasic-Programm auf DOS zum laufen kriegst...

Verfasst: 25.05.2009 11:27
von MrVain
Kaeru Gaman hat geschrieben:schau dir mal RSet an...

allerdings bezweifle ich, dass du ein PureBasic-Programm auf DOS zum laufen kriegst...
Das Programm läuft soweit unter DOS.

Es nimmt die Start und End Zeit und ermittelt die Dauer (Sekunden) und gibt diese als Errorlevel aus.

Ich schaue mir nachher mal RSet an - danke

Verfasst: 25.05.2009 11:32
von Kaeru Gaman
MrVain hat geschrieben:Das Programm läuft soweit unter DOS.
ich wette hundert sklaven dagegen! :mrgreen:

Verfasst: 25.05.2009 11:54
von Rebon
Ich brauchte zufällig den gleichen Befehl:

Code: Alles auswählen

Dateiname2$ = Dname$ + "-" + BestellNr$ + "-ls-" + RSet(Str(GetGadgetState(13)), 4, "0") + ".doc"

Verfasst: 25.05.2009 11:57
von MrVain
Kaeru Gaman hat geschrieben:
MrVain hat geschrieben:Das Programm läuft soweit unter DOS.
ich wette hundert sklaven dagegen! :mrgreen:
Ich habe eine Log-Datei mit folgendem Inhalt:

Code: Alles auswählen

[BANDSICHERUNG]
START = 20.05.2009 16:25:20,07 
ENDE = 22.05.2009 16:25:24,09 
Rufe mit einer Batch Datei mein Programm auf:

Code: Alles auswählen

dauer.exe sicherung.log BANDSICHERUNG
und erhalte in DOS mit

Code: Alles auswählen

echo %errorlevel%
den Wert in Sekunden.

Verfasst: 25.05.2009 12:31
von Rebon
Rebon hat geschrieben:Ich brauchte zufällig den gleichen Befehl:

Code: Alles auswählen

Dateiname2$ = Dname$ + "-" + BestellNr$ + "-ls-" + RSet(Str(GetGadgetState(13)), 4, "0") + ".doc"
Nachtrag:

Die 4 in dem RSetbefehl mit der Zeichenanzahl tauschen die du benötigst.