;-- TIME_STAMP 2020-02-20 21:49:32 v 0.1 Opt('MustDeclareVars', 1) #cs Deutsche Stimme für Sprachausgabe herunterladen: http://ulrichhanke.de/26/StimmeSteffi.html und installieren. Uhrzeitangaben, Stunden von 0 bis 23 $_sType '' (Standard) , Uhzeitangabe im offiziellen Sprachgebrauch 12:00 zwölf Uhr 12:01 bis 12:59 zwölf Uhr und n Minute/n 13:00 dreizehn Uhr Uhrzeitangaben, Stunden von 1 bis 12 , verbreitete regionale Angaben $_sType 'A' , very crazy :=) , Region: Magdeburger Börde/Altmark 12:00 zwölf Uhr STUNDE 12:01 bis 12:10 1 bis 10 Minuten NACH zwölf MINUTEN nach STUNDE 12:11 bis 12:14 4 bis 1 Minuten VOR VIERTEL eins MINUTEN vor VIERTEL angefangene STUNDE 12:15 VIERTEL eins VIERTEL angefangene STUNDE 12:16 bis 12:19 1 bis 4 Minuten NACH VIERTEL eins MINUTEN nach VIERTEL angefangene STUNDE 12:20 bis 12:29 10 bis 1 Minuten VOR HALB eins MINUTEN vor HALB angefangene STUNDE 12:30 HALB eins HALB angefangene STUNDE 12:31 bis 12:40 1 bis 10 Minuten NACH HALB eins MINUTEN nach HALB angefangene STUNDE 12:41 bis 12:44 4 bis 1 Minuten VOR DREIVIERTEL eins MINUTEN vor DREIVIERTEL angefangene STUNDE 12:45 DREIVIERTEL eins DREIVIERTEL angefangene STUNDE 12:46 bis 12:49 1 bis 4 Minuten NACH DREIVIERTEL eins MINUTEN nach DREIVIERTEL angefangene STUNDE 12:50 bis 12:59 10 bis 1 Minuten VOR eins MINUTEN vor angefangene STUNDE $_sType 'B' , Region vorwiegend: Mittel-/Norddeutschland 12:00 zwölf Uhr STUNDE 12:01 bis 12:14 1 bis 14 Minuten NACH zwölf MINUTEN nach STUNDE 12:15 VIERTEL eins VIERTEL angefangene STUNDE 12:16 bis 12:29 14 bis 1 Minuten VOR HALB eins MINUTEN vor HALB angefangene STUNDE 12:30 HALB eins HALB angefangene STUNDE 12:31 bis 12:44 1 bis 14 Minuten NACH HALB eins MINUTEN nach HALB angefangene STUNDE 12:45 DREIVIERTEL eins DREIVIERTEL angefangene STUNDE 12:46 bis 12:59 14 bis 1 Minuten VOR eins MINUTEN vor angefangene STUNDE $_sType 'C' , Region vorwiegend: Süddeutschland 12:00 zwölf Uhr STUNDE 12:01 bis 12:14 1 bis 14 Minuten NACH zwölf MINUTEN nach STUNDE 12:15 VIERTEL NACH zwölf VIERTEL nach STUNDE 12:16 bis 12:19 16 bis 19 Minuten nach zwölf MINUTEN nach STUNDE 12:20 bis 12:29 10 bis 1 Minuten VOR HALB eins MINUTEN vor HALB angefangene STUNDE 12:30 HALB eins HALB angefangene STUNDE 12:31 bis 12:40 1 bis 10 Minuten NACH HALB eins MINUTEN nach HALB angefangene STUNDE 12:41 bis 12:44 19 bis 16 Minuten VOR eins MINUTEN vor angefangene STUNDE 12:45 VIERTEL VOR eins VIERTEL vor angefangene STUNDE 12:46 bis 12:59 14 bis 1 Minuten VOR eins MINUTEN vor angefangene STUNDE #ce ; #FUNCTION# ==================================================================================================================== ; Name ..........: _SayTheTime ; Description ...: Use TextToSpeech with the passed time string. ; Syntax ........: _SayTheTime([$_sTime = '']) ; Parameters ....: $_sTime - [optional] The time string. Default is '', current time. ; ...............: Pass a defined time with the function "_GetTime". ; Return values .: None ; Author ........: BugFix ; =============================================================================================================================== Func _SayTheTime($_sTime='') $_sTime = $_sTime = '' ? _GetTime() : $_sTime Local Static $bInit = False Local Static $oTalk If Not $bInit Then $bInit = __InitSAPI($oTalk) If $bInit Then $oTalk.Speak($_sTime) EndFunc ; #FUNCTION# ==================================================================================================================== ; Name ..........: _GetTime ; Description ...: Creates a time string for a passed or (by default) the current time with a selected type. ; Syntax ........: _GetTime([$_hr = -1[, $_min = -1[, $_sType = '']]]) ; Parameters ....: $_hr - [optional] The hour. Default is -1, current hour. ; $_min - [optional] The minute. Default is -1, current minute. ; $_sType - [optional] The way of speaking. Default is '', the official kind. ; Return values .: The time string. ; Author ........: BugFix ; =============================================================================================================================== Func _GetTime($_hr=-1, $_min=-1, $_sType='') $_hr = $_hr = -1 ? Int(@HOUR) : $_hr $_min = $_min = -1 ? Int(@MIN) : $_min Local Static $aHour[] = ['Zwölf','Eins','Zwei','Drei','Vier','Fünf','Sechs','Sieben','Acht','Neun','Zehn','Elf','Zwölf', _ 'Eins','Zwei','Drei','Vier','Fünf','Sechs','Sieben','Acht','Neun','Zehn','Elf'] Local Static $aMin[] = ['','Eine','Zwei','Drei','Vier','Fünf','Sechs','Sieben','Acht','Neun','Zehn','Elf','Zwölf', _ 'Dreizehn','Vierzehn','','Sechzehn','Siebzehn','Achtzehn','Neunzehn'] Local $sMin = '', $sConnect = '', $sQuart = '', $sHour = $aHour[$_hr], $sUnit = 'Minuten ' If $_sType = '' Then ; offizielle Zeit Switch $_min Case 0 $sMin = '' Case 1 $sMin = ' und eine Minute' Case Else $sMin = ' und ' & $_min & ' Minuten' EndSwitch Return StringFormat('%s Uhr%s', $_hr, $sMin) EndIf Local $bNextHour = $_min = 0 ? False : True Switch $_min Case 1 To 10 $sMin = $aMin[$_min] $sConnect = 'Nach' $bNextHour = False Case 11 To 14 $sMin = $_sType='A' ? $aMin[15-$_min] : $aMin[$_min] $sConnect = $_sType='A' ? 'Vor' : 'Nach' $sQuart = $_sType='A' ? 'Viertel' : '' $bNextHour = $_sType='A' ? True : False Case 15 $sMin = $_sType='C' ? 'Viertel' : '' $sConnect = $_sType='C' ? 'Nach' : '' $sQuart = $_sType='C' ? '' : 'Viertel' $bNextHour = $_sType='C' ? False : True Case 16 To 19 $sMin = $_sType='A' ? $aMin[$_min-15] : ($_sType='C' ? $aMin[$_min] : $aMin[30-$_min]) $sConnect = StringInStr('AC',$_sType) ? 'Nach' : 'Vor' $sQuart = $_sType='A' ? 'Viertel' : ($_sType='C' ? '' : 'Halb') $bNextHour = $_sType='C' ? False : True Case 20 To 29 $sMin = $aMin[30-$_min] $sConnect = 'Vor' $sQuart = 'Halb' Case 30 $sMin = '' $sConnect = '' $sQuart = 'Halb' Case 31 To 40 $sMin = $aMin[$_min-30] $sConnect = 'Nach' $sQuart = 'Halb' Case 41 To 44 $sMin = $_sType='A' ? $aMin[45-$_min] : ($_sType='C' ? $aMin[60-$_min] : $aMin[$_min-30]) $sConnect = StringInStr('AC',$_sType) ? 'Vor' : 'Nach' $sQuart = $_sType='A' ? 'Dreiviertel' : ($_sType='C' ? '' : 'Halb') Case 45 $sMin = $_sType='C' ? 'Viertel' : '' $sConnect = $_sType='C' ? 'Vor' : '' $sQuart = $_sType='C' ? '' : 'Dreiviertel' Case 46 To 49 $sMin = $_sType='A' ? $aMin[$_min-45] : $aMin[60-$_min] $sConnect = $_sType='A' ? 'Nach' : 'Vor' $sQuart = $_sType='A' ? 'Dreiviertel' : '' Case 50 To 59 $sMin = $aMin[60-$_min] $sConnect = 'Vor' $sQuart = '' EndSwitch $sUnit = $_min > 1 ? (($_min=15 Or $_min=45) ? '' : $sUnit) : 'Minute ' If $bNextHour Then ; Zeitangabe als Teil der folgenden Stunde $_hr = $_hr = 23 ? 0 : $_hr +1 $sHour = $aHour[$_hr] EndIf Return StringFormat('%s%s%s%s%s%s%s%s', $sMin, ($sMin=''?'':' '), ($sMin=''?'':$sUnit), _ $sConnect, ($sConnect=''?'':' '), $sQuart, ($sQuart=''?'':' '), $sHour) EndFunc ; #INTERNAL_USE_ONLY# =========================================================================================================== ; Name ..........: __InitSAPI ; Description ...: Creates the SAPI.SpVoice-Object and select the german voice. ; =============================================================================================================================== Func __InitSAPI(ByRef $_oTalk) $_oTalk = ObjCreate('SAPI.SpVoice') If Not IsObj($_oTalk) Then MsgBox(16, 'FEHLER', '"SAPI.SpVoice" ist nicht installiert') Return False EndIf Local $oVoices = $_oTalk.GetVoices("Language=407") If $oVoices.Count < 1 Then MsgBox(16, 'FEHLER', 'Keine deutsche Stimme installiert') Return False EndIf $_oTalk.Voice = $oVoices.Item(0) Return True EndFunc