home *** CD-ROM | disk | FTP | other *** search
/ Programming Tool Box / SIMS_2.iso / demo / vbhw / hexcalc.fr_ / hexcalc.fr
Text File  |  1993-11-16  |  17KB  |  656 lines

  1. VERSION 2.00
  2. Begin Form HexCalcFrm 
  3.    BackColor       =   &H00C0C0C0&
  4.    BorderStyle     =   3  'Fixed Double
  5.    Caption         =   "HexCalc"
  6.    ClientHeight    =   4740
  7.    ClientLeft      =   3060
  8.    ClientTop       =   2505
  9.    ClientWidth     =   3945
  10.    Height          =   5430
  11.    Icon            =   HEXCALC.FRX:0000
  12.    Left            =   3000
  13.    LinkTopic       =   "Form1"
  14.    ScaleHeight     =   540
  15.    ScaleWidth      =   540
  16.    Top             =   1875
  17.    Width           =   4065
  18.    Begin CommandButton ExponButton 
  19.       Caption         =   "^"
  20.       Height          =   375
  21.       Left            =   3060
  22.       TabIndex        =   37
  23.       Tag             =   "Exponentiation"
  24.       Top             =   2940
  25.       Width           =   615
  26.    End
  27.    Begin CommandButton DivButton 
  28.       Caption         =   "/"
  29.       Height          =   375
  30.       Left            =   3060
  31.       TabIndex        =   36
  32.       Tag             =   "Divide current value"
  33.       Top             =   1680
  34.       Width           =   615
  35.    End
  36.    Begin CommandButton MultButton 
  37.       Caption         =   "X"
  38.       Height          =   375
  39.       Left            =   2400
  40.       TabIndex        =   35
  41.       Tag             =   "Multiply current value"
  42.       Top             =   1680
  43.       Width           =   615
  44.    End
  45.    Begin CommandButton ComplementButton 
  46.       Caption         =   "Not"
  47.       Height          =   375
  48.       Left            =   2400
  49.       TabIndex        =   34
  50.       Tag             =   "Perform Boolean complement"
  51.       Top             =   2940
  52.       Width           =   615
  53.    End
  54.    Begin CommandButton ORButton 
  55.       Caption         =   "OR"
  56.       Height          =   375
  57.       Left            =   3060
  58.       TabIndex        =   33
  59.       Tag             =   "Perform Boolean OR operation"
  60.       Top             =   2520
  61.       Width           =   615
  62.    End
  63.    Begin CommandButton ANDButton 
  64.       Caption         =   "And"
  65.       Height          =   375
  66.       Left            =   2400
  67.       TabIndex        =   32
  68.       Tag             =   "Perform Boolean AND operation"
  69.       Top             =   2520
  70.       Width           =   615
  71.    End
  72.    Begin CommandButton Erase 
  73.       Caption         =   "<-"
  74.       Height          =   315
  75.       Left            =   2940
  76.       TabIndex        =   31
  77.       Tag             =   "Erase last character entered"
  78.       Top             =   900
  79.       Width           =   735
  80.    End
  81.    Begin CommandButton MemoryMinus 
  82.       Caption         =   "M-"
  83.       Height          =   375
  84.       Left            =   3120
  85.       TabIndex        =   30
  86.       Tag             =   "Subtract displayed number from memory register"
  87.       Top             =   4260
  88.       Width           =   615
  89.    End
  90.    Begin CommandButton MemoryPlus 
  91.       Caption         =   "M+"
  92.       Height          =   375
  93.       Left            =   2400
  94.       TabIndex        =   29
  95.       Tag             =   "Add displayed number to memory register"
  96.       Top             =   4260
  97.       Width           =   615
  98.    End
  99.    Begin CommandButton MemoryRecall 
  100.       Caption         =   "MR"
  101.       Height          =   375
  102.       Left            =   3120
  103.       TabIndex        =   28
  104.       Tag             =   "Recall memory register as current entry"
  105.       Top             =   3840
  106.       Width           =   615
  107.    End
  108.    Begin CommandButton MemoryClear 
  109.       Caption         =   "MC"
  110.       Height          =   375
  111.       Left            =   2400
  112.       TabIndex        =   27
  113.       Tag             =   "Clear Memory register"
  114.       Top             =   3840
  115.       Width           =   615
  116.    End
  117.    Begin CommandButton ClearEntry 
  118.       Caption         =   "CE"
  119.       Height          =   375
  120.       Left            =   3060
  121.       TabIndex        =   26
  122.       Tag             =   "Clear Current Entry and reset total"
  123.       Top             =   2100
  124.       Width           =   615
  125.    End
  126.    Begin CommandButton Clear 
  127.       Caption         =   "C"
  128.       Height          =   375
  129.       Left            =   2400
  130.       TabIndex        =   25
  131.       Tag             =   "Clear Current Entry"
  132.       Top             =   2100
  133.       Width           =   615
  134.    End
  135.    Begin SSOption Hex 
  136.       Caption         =   "Hex"
  137.       Font3D          =   0  'None
  138.       Height          =   255
  139.       Left            =   1560
  140.       TabIndex        =   22
  141.       TabStop         =   0   'False
  142.       Tag             =   "Click o Select HEX data entry"
  143.       Top             =   900
  144.       Width           =   1215
  145.    End
  146.    Begin SSOption Decimal 
  147.       Caption         =   "Decimal"
  148.       Font3D          =   0  'None
  149.       Height          =   255
  150.       Left            =   240
  151.       TabIndex        =   21
  152.       Tag             =   "Click tto Select Decimal data entry"
  153.       Top             =   900
  154.       Value           =   -1  'True
  155.       Width           =   1215
  156.    End
  157.    Begin CommandButton Equal 
  158.       Caption         =   "="
  159.       Height          =   435
  160.       Left            =   2400
  161.       TabIndex        =   19
  162.       Tag             =   "Show final result of calculation"
  163.       Top             =   3360
  164.       Width           =   1335
  165.    End
  166.    Begin CommandButton Minus 
  167.       Caption         =   "-"
  168.       Height          =   375
  169.       Left            =   3060
  170.       TabIndex        =   18
  171.       Tag             =   "Subtract Current Entry from total"
  172.       Top             =   1260
  173.       Width           =   555
  174.    End
  175.    Begin CommandButton Plus 
  176.       Caption         =   "+"
  177.       Height          =   375
  178.       Left            =   2400
  179.       TabIndex        =   17
  180.       Tag             =   "Add current entry to total"
  181.       Top             =   1260
  182.       Width           =   615
  183.    End
  184.    Begin CommandButton Digit 
  185.       Caption         =   "F"
  186.       Height          =   555
  187.       Index           =   15
  188.       Left            =   1500
  189.       TabIndex        =   16
  190.       Top             =   4080
  191.       Width           =   675
  192.    End
  193.    Begin CommandButton Digit 
  194.       Caption         =   "E"
  195.       Height          =   555
  196.       Index           =   14
  197.       Left            =   840
  198.       TabIndex        =   15
  199.       Top             =   4080
  200.       Width           =   675
  201.    End
  202.    Begin CommandButton Digit 
  203.       Caption         =   "D"
  204.       Height          =   555
  205.       Index           =   13
  206.       Left            =   180
  207.       TabIndex        =   14
  208.       Top             =   4080
  209.       Width           =   675
  210.    End
  211.    Begin CommandButton Digit 
  212.       Caption         =   "C"
  213.       Height          =   555
  214.       Index           =   12
  215.       Left            =   1500
  216.       TabIndex        =   13
  217.       Top             =   3540
  218.       Width           =   675
  219.    End
  220.    Begin CommandButton Digit 
  221.       Caption         =   "B"
  222.       Height          =   555
  223.       Index           =   11
  224.       Left            =   840
  225.       TabIndex        =   12
  226.       Top             =   3540
  227.       Width           =   675
  228.    End
  229.    Begin CommandButton Digit 
  230.       Caption         =   "A"
  231.       Height          =   555
  232.       Index           =   10
  233.       Left            =   180
  234.       TabIndex        =   11
  235.       Top             =   3540
  236.       Width           =   675
  237.    End
  238.    Begin CommandButton Digit 
  239.       Caption         =   "9"
  240.       Height          =   555
  241.       Index           =   9
  242.       Left            =   1560
  243.       TabIndex        =   10
  244.       Top             =   2340
  245.       Width           =   675
  246.    End
  247.    Begin CommandButton Digit 
  248.       Caption         =   "8"
  249.       Height          =   555
  250.       Index           =   8
  251.       Left            =   900
  252.       TabIndex        =   9
  253.       Top             =   2340
  254.       Width           =   675
  255.    End
  256.    Begin CommandButton Digit 
  257.       Caption         =   "7"
  258.       Height          =   555
  259.       Index           =   7
  260.       Left            =   240
  261.       TabIndex        =   8
  262.       Top             =   2340
  263.       Width           =   675
  264.    End
  265.    Begin CommandButton Digit 
  266.       Caption         =   "6"
  267.       Height          =   555
  268.       Index           =   6
  269.       Left            =   1560
  270.       TabIndex        =   7
  271.       Top             =   1800
  272.       Width           =   675
  273.    End
  274.    Begin CommandButton Digit 
  275.       Caption         =   "5"
  276.       Height          =   555
  277.       Index           =   5
  278.       Left            =   900
  279.       TabIndex        =   6
  280.       Top             =   1800
  281.       Width           =   675
  282.    End
  283.    Begin CommandButton Digit 
  284.       Caption         =   "4"
  285.       Height          =   555
  286.       Index           =   4
  287.       Left            =   240
  288.       TabIndex        =   5
  289.       Top             =   1800
  290.       Width           =   675
  291.    End
  292.    Begin CommandButton Digit 
  293.       Caption         =   "3"
  294.       Height          =   555
  295.       Index           =   3
  296.       Left            =   1560
  297.       TabIndex        =   4
  298.       Top             =   1260
  299.       Width           =   675
  300.    End
  301.    Begin CommandButton Digit 
  302.       Caption         =   "2"
  303.       Height          =   555
  304.       Index           =   2
  305.       Left            =   900
  306.       TabIndex        =   3
  307.       Top             =   1260
  308.       Width           =   675
  309.    End
  310.    Begin CommandButton Digit 
  311.       Caption         =   "1"
  312.       Height          =   555
  313.       Index           =   1
  314.       Left            =   240
  315.       TabIndex        =   2
  316.       Tag             =   "Digits 1-9 and A-F are used to enter data"
  317.       Top             =   1260
  318.       Width           =   675
  319.    End
  320.    Begin CommandButton Digit 
  321.       Caption         =   "0"
  322.       Height          =   555
  323.       Index           =   0
  324.       Left            =   900
  325.       TabIndex        =   1
  326.       Top             =   2880
  327.       Width           =   675
  328.    End
  329.    Begin Label Label1 
  330.       BackColor       =   &H00C0C0C0&
  331.       Caption         =   "Hex"
  332.       Height          =   255
  333.       Index           =   1
  334.       Left            =   240
  335.       TabIndex        =   24
  336.       Top             =   540
  337.       Width           =   795
  338.    End
  339.    Begin Label Label1 
  340.       BackColor       =   &H00C0C0C0&
  341.       Caption         =   "Decimal"
  342.       Height          =   255
  343.       Index           =   0
  344.       Left            =   240
  345.       TabIndex        =   23
  346.       Top             =   240
  347.       Width           =   795
  348.    End
  349.    Begin Label HexDisplay 
  350.       BackColor       =   &H00FFFFFF&
  351.       BorderStyle     =   1  'Fixed Single
  352.       ForeColor       =   &H00808080&
  353.       Height          =   315
  354.       Left            =   1080
  355.       TabIndex        =   20
  356.       Tag             =   "Window To display HEX results"
  357.       Top             =   540
  358.       Width           =   2775
  359.    End
  360.    Begin Label DecDisplay 
  361.       BorderStyle     =   1  'Fixed Single
  362.       Height          =   315
  363.       Left            =   1080
  364.       TabIndex        =   0
  365.       Tag             =   "Window to display Decimal results"
  366.       Top             =   180
  367.       Width           =   2775
  368.    End
  369.    Begin Menu ID_FILE 
  370.       Caption         =   "&File"
  371.       Begin Menu ID_EXIT 
  372.          Caption         =   "E&xit"
  373.       End
  374.    End
  375.    Begin Menu ID_BOOL 
  376.       Caption         =   "&Boolean"
  377.       Begin Menu ID_AND 
  378.          Caption         =   "&And"
  379.       End
  380.       Begin Menu ID_OR 
  381.          Caption         =   "&Or"
  382.       End
  383.       Begin Menu ID_NOT 
  384.          Caption         =   "&Not"
  385.       End
  386.    End
  387.    Begin Menu ID_HELP 
  388.       Caption         =   "&Help"
  389.    End
  390. End
  391. Option Explicit
  392.  
  393. Dim Result As Double
  394. Dim NewValue As Long
  395. Dim Memory As Long
  396.  
  397.  
  398. Dim BaseVal As Integer
  399.  
  400. Dim Operation As Integer
  401.  
  402. Const Add = 1
  403. Const Subtract = 2
  404. Const Multiply = 3
  405. Const Divide = 4
  406. Const BoolAnd = 5
  407. Const BoolOr = 6
  408. Const BoolNot = 7
  409. Const Exponent = 8
  410.  
  411.  
  412.  
  413.  
  414. Dim MAXVALUE As Long
  415.  
  416. Sub ANDButton_Click ()
  417.     Boolean BoolAnd
  418. End Sub
  419.  
  420. Sub Boolean (BoolOp As Integer)
  421.      Dim temp As Long
  422.  
  423.     If BoolOp = BoolNot Then
  424.         temp = Len(HexDisplay) - 1
  425.         temp = temp * 4
  426.         temp = 2 ^ temp
  427.         temp = temp - 1
  428.         NewValue = Not NewValue And temp
  429.         UpdateDisplay
  430.     Else
  431.         Result = NewValue
  432.         NewValue = 0
  433.         Operation = BoolOp
  434.     End If
  435. End Sub
  436.  
  437. Sub Clear_Click ()
  438.     NewValue = 0
  439.     Result = 0
  440.     UpdateDisplay
  441. End Sub
  442.  
  443. Sub ClearEntry_Click ()
  444.     NewValue = 0
  445.     UpdateDisplay
  446.  
  447. End Sub
  448.  
  449. Sub ComplementButton_Click ()
  450.     Boolean BoolNot
  451. End Sub
  452.  
  453. Sub Decimal_Click (Value As Integer)
  454.     If Value = True Then
  455.         BaseVal = 10
  456.         HexDisplay.ForeColor = &H808080
  457.         DecDisplay.ForeColor = 0
  458.     End If
  459.  
  460. End Sub
  461.  
  462. Sub Digit_Click (index As Integer)
  463.     
  464.     If index >= BaseVal Then Exit Sub
  465.  
  466.     If NewValue > (MAXVALUE / BaseVal) Then
  467.         Exit Sub
  468.     Else
  469.         NewValue = NewValue * BaseVal + index
  470.         UpdateDisplay
  471.     End If
  472. End Sub
  473.  
  474. Sub Equal_Click ()
  475.     Select Case Operation
  476.     Case Add
  477.         Result = Result + NewValue
  478.     Case Subtract
  479.         Result = Result - NewValue
  480.     Case Multiply
  481.         If MAXVALUE / NewValue >= Result Then
  482.             Result = Result * NewValue
  483.         End If
  484.     Case Divide
  485.         Result = Result / NewValue
  486.     Case Exponent
  487.         If NewValue < 30 Then
  488.             Result = Result ^ NewValue
  489.         End If
  490.     Case BoolAnd
  491.         Result = Result And NewValue
  492.     Case BoolOr
  493.         Result = Result Or NewValue
  494.     End Select
  495.  
  496.     NewValue = 0
  497.     ShowResult
  498. End Sub
  499.  
  500. Sub Erase_Click ()
  501.     Dim Length As Integer
  502.     Dim Tmp As Integer, temp$
  503.     Dim i As Integer
  504.  
  505.     NewValue = 0
  506.     If BaseVal = 10 Then
  507.         temp$ = DecDisplay
  508.     Else
  509.         temp$ = HexDisplay
  510.     End If
  511.  
  512.     Length = Len(temp$)
  513.  
  514.     If Length > 1 Then
  515.  
  516.         For i = 1 To Length - 1
  517.             Select Case Mid$(temp$, i, 1)
  518.             Case "1"
  519.                 Tmp = 1
  520.             Case "2"
  521.                 Tmp = 2
  522.             Case "3"
  523.                 Tmp = 3
  524.             Case "4"
  525.                 Tmp = 4
  526.             Case "5"
  527.                 Tmp = 5
  528.             Case "6"
  529.                 Tmp = 6
  530.             Case "7"
  531.                 Tmp = 7
  532.             Case "8"
  533.                 Tmp = 8
  534.             Case "9"
  535.                 Tmp = 9
  536.             Case "A"
  537.                 Tmp = 10
  538.             Case "B"
  539.                 Tmp = 11
  540.             Case "C"
  541.                 Tmp = 12
  542.             Case "D"
  543.                 Tmp = 13
  544.             Case "E"
  545.                 Tmp = 14
  546.             Case "F"
  547.                 Tmp = 15
  548.             End Select
  549.  
  550.             NewValue = NewValue * BaseVal + Tmp
  551.         Next i
  552.     End If
  553.     UpdateDisplay
  554. End Sub
  555.  
  556. Sub ExponButton_Click ()
  557.     Operation = Exponent
  558.     Result = NewValue
  559.     NewValue = 0
  560. End Sub
  561.  
  562. Sub Form_Load ()
  563.     'SetAppHelp Me.hWnd
  564.     'HelpWindowSize 128, 128, 700, 500
  565.  
  566.     Result = 0
  567.     NewValue = 0
  568.     Memory = 0
  569.     BaseVal = 10
  570.     MAXVALUE = &HFFFFFFF
  571.  
  572. End Sub
  573.  
  574. Sub Form_Unload (Cancel As Integer)
  575.     'QuitHelp
  576. End Sub
  577.  
  578. Sub Hex_Click (Value As Integer)
  579.     If Value = True Then
  580.         BaseVal = 16
  581.         HexDisplay.ForeColor = 0
  582.         DecDisplay.ForeColor = &H808080
  583.     End If
  584.  
  585. End Sub
  586.  
  587. Sub ID_AND_Click ()
  588.     Boolean BoolAnd
  589. End Sub
  590.  
  591. Sub ID_EXIT_Click ()
  592.     Unload Me
  593. End Sub
  594.  
  595. Sub ID_HELP_Click ()
  596.     'ShowHelpTopic Hlp_HexCalc_
  597. End Sub
  598.  
  599. Sub ID_NOT_Click ()
  600.     Boolean BoolNot
  601. End Sub
  602.  
  603. Sub ID_OR_Click ()
  604.     Boolean BoolOr
  605. End Sub
  606.  
  607. Sub MemoryClear_Click ()
  608.     Memory = 0
  609.  
  610. End Sub
  611.  
  612. Sub MemoryMinus_Click ()
  613.     Memory = Memory - Val(DecDisplay)
  614. End Sub
  615.  
  616. Sub MemoryPlus_Click ()
  617.     Memory = Memory + Val(DecDisplay)
  618. End Sub
  619.  
  620. Sub MemoryRecall_Click ()
  621.     NewValue = Memory
  622.     UpdateDisplay
  623. End Sub
  624.  
  625. Sub Minus_Click ()
  626.     Operation = Subtract
  627.     Result = Result - NewValue
  628.     NewValue = 0
  629.     ShowResult
  630. End Sub
  631.  
  632. Sub ORButton_Click ()
  633.     Boolean BoolOr
  634. End Sub
  635.  
  636. Sub Plus_Click ()
  637.     Operation = Add
  638.  
  639.     Result = Result + NewValue
  640.     NewValue = 0
  641.     ShowResult
  642.  
  643. End Sub
  644.  
  645. Sub ShowResult ()
  646.     DecDisplay = Str$(Result)
  647.     HexDisplay = " " + Hex$(Result)
  648.  
  649. End Sub
  650.  
  651. Sub UpdateDisplay ()
  652.     DecDisplay = Str$(NewValue)
  653.     HexDisplay = " " + Hex$(NewValue)
  654. End Sub
  655.  
  656.