Что нового

[Математика] Перевод единиц скорости передачи информации

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Данный скрипт предназначен для перевода одних единиц измерения скорости передачи информации в другие.

Код:
; НАЧАЛО

 $O='бит|Килобит|Мегабит|Гигабит|Байт|КилоБайт|МегаБайт|ГигаБайт'
 $T='в секунду|в минуту|в час|в сутки|в неделю|в месяц|в год'
 Dim $AO[8]=[1,1024,1024*1024,1024*1024*1024,8,1024*8,1024*1024*8,1024*1024*1024*8]
 Dim $AT[7]=[1,60,60*60,60*60*24,60*60*24*7,60*60*24*30,60*60*24*365]

 $GUI=GUICreate('Скорость передачи информации',10+100+10+100+10+100+10+100+10,10+25+10+120+10-10)

 $IV=GUICtrlCreateInput('',10,10,100+10+100,25)
 $IO=GUICtrlCreateList('',10,10+25+10,100,120,0)
 $IT=GUICtrlCreateList('',10+100+10,10+25+10,100,120,0)

 $OV=GUICtrlCreateInput('',10+100+10+100+10,10,100+10+100,25,0x0800)
 $OO=GUICtrlCreateList('',10+100+10+100+10,10+25+10,100,120,0)
 $OT=GUICtrlCreateList('',10+100+10+100+10+100+10,10+25+10,100,120,0)

 GUICtrlSetData($IV,'1')
 GUICtrlSetData($IO,$O,'бит')
 GUICtrlSetData($IT,$T,'в секунду')

 GUICtrlSetData($OV,'1')
 GUICtrlSetData($OO,$O,'бит')
 GUICtrlSetData($OT,$T,'в секунду')

 GUISetState()

 $HIV=GUICtrlGetHandle($IV)

 GUIRegisterMsg(0x0111,'WM_COMMAND')

 While True
  Switch GUIGetMsg()
   Case -3
    ExitLoop
   Case $IO,$IT,$OO,$OT
    CALC()
  EndSwitch
 WEnd

 Func CALC()
  $IVV=GUICtrlRead($IV)
  $IOV=ControlCommand($GUI,'',$IO,'FindString',GUICtrlRead($IO))
  $ITV=ControlCommand($GUI,'',$IT,'FindString',GUICtrlRead($IT))
  $OOV=ControlCommand($GUI,'',$OO,'FindString',GUICtrlRead($OO))
  $OTV=ControlCommand($GUI,'',$OT,'FindString',GUICtrlRead($OT))
  GUICtrlSetData($OV,Floor($IVV*$AO[$IOV]*$AT[$OTV]/$AT[$ITV]/$AO[$OOV]))
 EndFunc

 Func WM_COMMAND($hWnd,$iMsg,$iwParam,$ilParam)
  Switch $ilParam
   Case $HIV
    Switch BitShift($iwParam,16)
     Case 0x300
      CALC()
     EndSwitch
  EndSwitch
  Return 'GUI_RUNDEFMSG'
 EndFunc

; КОНЕЦ
 
Верх