とりこらぼ。

Learn from yesterday,
live for today,
hope for tomorrow.

目次

Blog 利用状況

ニュース

プロフィール

  • 名前:とりこびと
    とるに足らない人間です。

  • Wankuma MVP
    for '平々凡々'

Web Site

  • Memo(Of T)

もうひとつの Blog

広告っぽい

書庫

日記カテゴリ

ひとりでんたく。- Visual Basic で電卓つく~る。その3 -

ひとりでんたく。- Visual Basic で電卓つく~る。その2 -←前回。

すでに「ひとりでんたく」じゃなくなってしまった、前回のあらすじ。

はぁ・・・今日も湿度たか~い。

前回は数字を入力する動作を作りました。それだけです。(←こっちがあらすじ。)

じゃ、つぎー!


1+2=3 な感じをつく~る!(ついでに -, ×, ÷ もいっとけー!)


それっぽいことになってまいりました!流れはこんな感じ?

  1. 1 を入力 → 表示は 1 に。
  2. + を入力 → 表示は変化なし。
  3. 2 を入力 → 表示は 2 に。
  4. = を入力 → 表示は 3 に。

ふぅむ・・・ ⅱのときにⅰの 1 と、+ を覚えておいて、ⅲでの 2 を新しく入力できる状態にしておいて、ⅳで 覚えておいた ⅰの値と、ⅲでの値をⅱの演算子で計算して、結果を表示すればよい・・・のかな?(自分で書いててナゾだ・・・。orz)

さっそく用意したのがコレ↓。

Public Enum ArithmeticOperation

    None     Addition     Subtraction     Multiplication     Division
End Enum

演算の種類(なんも無し, +, -, ×, ÷)を表します。

んでもって、ⅰで入力されたのと、ⅱで入力されたのを覚えておくためのフィールドを作りますた。

Private _memo As Decimal

Private _operation As Calculator.ArithmeticOperation

さらに、ⅲの時に新しく入力できる(ⅰに続けざまに入力しない)ように、判断用のフィールドも作りました。

Private _nextInputIsNew As Boolean

で、初期化メソッドを修正して

Public Sub Initialize()

    Me.DisplayText = "0"     Me._memo = Decimal.Zero     Me._operation = ArithmeticOperation.None     Me._nextInputIsNew = True
End Sub

で、ⅱの部分のメソッドはこんな感じ?

Public Sub SetArithmeticOperation(ByVal op As Calculator.ArithmeticOperation)

    ' 今入力されているのと、演算子を覚えておいて・・・     Me._memo = Decimal.Parse(Me.DisplayText)     Me._operation = op
    ' 次の入力は新しい入力ですからねー♪     Me._nextInputIsNew = True
End Sub

お次は・・・えっと、ⅲの時のためにこないだ作った InputNumber メソッドを修正します。

Public Sub InputNumber(ByVal number As Decimal)

    ' 入力しちゃらめぇなのを入力したらなんにもしないの。     If Not Calculator.ValidInputNumbers.Contains(number) Then
        Exit Sub
    End If
    ' 中の人専用。(DisplayText を直接ゴソゴソしてるの見てたらなんかむかついたので。)     Dim newText As String
    ' 新しい入力なら "0" で     ' ついでに次回の入力は新しい入力じゃないよ~♪ってことで。     ' あ、前の入力の続きなら前の入力をセットしる!     If Me._nextInputIsNew Then
        newText = "0"         Me._nextInputIsNew = False
    Else
        newText = Me.DisplayText
    End If
    ' newText が、     ' 0 のときは入力された数字に置き換えるの。     ' 0 じゃないときは入力された数字をつなげるの。     If newText = "0" Then
        newText = number.ToString
    Else
        newText &= number.ToString
    End If
    ' できあがったのが Decimal に変換できるときだけOKってことにしとこう。     ' でもなんかこれ・・・気持ち悪い。     Dim parseValue As Decimal
    If Decimal.TryParse(newText, parseValue) Then
        Me.DisplayText = newText
    End If
End Sub

んでんで、んでんで、ⅳのとこ~


お医者さん:「今回はもうやめておきなさい。」


ってことで、次回に。こなくそー!!

投稿日時 : 2007年7月4日 20:46

Feedback

# ひとりでんたく。- Visual Basic で電卓つく~る。その4 - 2007/07/05 14:34 とりこびと ぶろぐ。

ひとりでんたく。- Visual Basic で電卓つく~る。その4 -

# CiKHXwRTLW 2012/01/04 6:18 http://www.kosherbeefjerky.com/

KrWE2a Very amusing thoughts, well told, everything is in its place:D

# Illikebuisse zartz 2021/07/04 8:52 pharmacepticacom

plaquenil sulfate 200 mg https://www.pharmaceptica.com/

# does erectile dysfunction go away 2021/07/09 5:20 what is hydroxychloroquine 200 mg

plaquenil sulfate 200 mg https://plaquenilx.com/# why is hydroxychloroquine

# re: ????????- Visual Basic ?????~????3 - 2021/07/16 19:47 dosage for hydroxychloroquine

natural chloroquine https://chloroquineorigin.com/# hydroxychloroquine side effect

# generic plaquenil 200mg 2022/12/28 8:04 MorrisReaks

https://www.hydroxychloroquinex.com/ aralen 500mg

タイトル
名前
Url
コメント