PDA

View Full Version : ماشین حسابم (نوشته شده با VB) کار نمیکنه!



ma)-(di
چهارشنبه 29 اردیبهشت 1389, 13:33 عصر
سلام.

من یه ماشین حساب نوشتم با VB6، ولی عمل های محاسباتی در اون انجام نمیشه!

نمیدونم مشگل کار من از کجاست!

این سورس، کد برنامه س که مطمئنم مشگلی نداره، چون توی کتاب درسی مون هست!

منتها ماشین حساب جواب نمیده!

سورس کد:




Dim dblm As Double
Dim op As String * 1, strlastinput As String, n1 As Double


Private Function calc(a As Double, b As Double, op As String) As Double
Select Case op
Case "*"
calc = a * b
Case "-"
calc = a - b
Case "+"
calc = a + b
Case "/"
calc = a / b
Case " "
calc = b
End Select
End Function


Private Sub cmd0_Click()

If lbloutput = "0." And blnpoint = False Then
lbloutput = "0"
Else
lbloutput = lbloutput + "0"
End If
End Sub

Private Sub cmd1_Click()
If lbloutput = "0." And blnpoint = False Then
lbloutput = "1"
Else
lbloutput = lbloutput + "1"
End If
End Sub

Private Sub cmd2_Click()

If lbloutput = "0." And blnpoint = False Then
lbloutput = "2"
Else
lbloutput = lbloutput + "2"
End If
End Sub

Private Sub cmd3_Click()

If lbloutput = "0." And blnpoint = False Then
lbloutput = "3"
Else
lbloutput = lbloutput + "3"
End If
End Sub

Private Sub cmd4_Click()

If lbloutput = "0." And blnpoint = False Then
lbloutput = "4"
Else
lbloutput = lbloutput + "4"
End If
End Sub

Private Sub cmd5_Click()

If lbloutput = "0." And blnpoint = False Then
lbloutput = "5"
Else
lbloutput = lbloutput + "5"
End If
End Sub

Private Sub cmd6_Click()

If lbloutput = "0." And blnpoint = False Then
lbloutput = "6"
Else
lbloutput = lbloutput + "6"
End If
End Sub

Private Sub cmd7_Click()

If lbloutput = "0." And blnpoint = False Then
lbloutput = "7"
Else
lbloutput = lbloutput + "7"
End If
End Sub

Private Sub cmd8_Click()

If lbloutput = "0." And blnpoint = False Then
lbloutput = "8"
Else
lbloutput = lbloutput + "8"
End If
End Sub

Private Sub cmd9_Click()

If lbloutput = "0." And blnpoint = False Then
lbloutput = "9"
Else
lbloutput = lbloutput + "9"
End If
End Sub

Private Sub cmddiv_Click()
Dim n1 As Double, op As String
If strlastinput = "nums" Then
n1 = calc(n1, Val(ibioutput), op)
lbioutput = n1
End If
n1 = Val(lbloutput)
op = "/"
lbnpint = False
End Sub

Private Sub cmdequal_Click()
Dim n1 As Double, op As String
n1 = calc(n1, Val(lbloutput), op)
If n1 = 0 Then
lbloutput = "0."
Else
lbloutput = n1
End If
op = " "
strlastinput = "op"
blnpoint = False
End Sub

Private Sub CMDMC_Click()
dblm = 0
LBLM = ""
strlastinput = ""
End Sub

Private Sub cmdminus_Click()
Dim n1 As Double, op As String
If strlastinput = "nums" Then
n1 = calc(n1, Val(ibioutput), op)
lbioutput = n1
End If
n1 = Val(lbloutput)
op = "-"
lbnpint = False
End Sub

Private Sub CMDMR_Click()
lbloutput = IIf(dblm = 0, "0.", dblm)
strlastinput = "nums"
if instr(lbloutput,".") 0 then blnpoint=true

End Sub


Private Sub cmdmul_Click()
Dim n1 As Double, op As String
If strlastinput = "nums" Then
n1 = calc(n1, Val(lbloutput), op)
lbloutput = n1
End If
n1 = Val(lbloutput)
op = "*"
strlastinput = "op"
lbnpoint = False
End Sub

Private Sub cmdplus_Click()

Dim n1 As Double, op As String
If strlastinput = "nums" Then
n1 = calc(n1, Val(ibioutput), op)
lbioutput = n1
End If
n1 = Val(lbloutput)
op = "+"
lbnpint = False
End Sub

Private Sub cmdpoint_Click()
blnpoint = True
If InStr(lbloutput, ".") = 0 Then
lbloutput = lbloutput + "."
End If
End Sub

Private Sub cmdsign_Click()
If lbloutput = "0." And blnpoint = False Then
Exit Sub
End If
If lbloutput = "0." Then
lbloutput = "-0."
Else
lbloutput = -Val(lbloutput)
End If
End Sub

Private Sub Command1_Click()

End Sub

Private Sub Form_Load()
Dim lbnpoint As Boolean
Dim op As String * 1, strlastinput As String
Dim n1 As Double
n1 = 1
op = " "
strlastinput = ""
End Sub


لطفاً کمک و راهنمایی کنید که مشگل کار من کجاست؟! :متفکر: :عصبانی++:

daniyal_1363
چهارشنبه 29 اردیبهشت 1389, 16:53 عصر
یکی از مشکلات برنامه در این قسمت

Private Sub Form_Load()
Dim lbnpoint As Boolean
Dim op As String * 1, strlastinput As String
Dim n1 As Double
n1 = 1
op = " "
strlastinput = ""
End Sub

متغییر lbnpoint چند جا تو برنامه استفاده شده و شما باید در General تعریفش کنید نه در Form_Load

کدت خیلی پیچ در پیچه برنامه رو بزار تا بگم مشکلات دیگش رو :چشمک: وقت چیدن این همه کلید رو ندارم :بامزه:

ma)-(di
چهارشنبه 29 اردیبهشت 1389, 17:53 عصر
سلام.
ممنونم از لطفتون.
برنامه رو در قالب یه فایل زیپ به صورت یه ضمیمه قرار دادم.

iragent
پنج شنبه 30 اردیبهشت 1389, 01:57 صبح
خيلي كارو سخت كردي
روش كار خيلي راحته

ببين ما يه سري دكمه داريم كه عدد وارد ميكنه
يه گروه ديگه هم عملگرند
يك متغير هم داريم كي بصورت عمومي تعريف ميشه

برنامه به اين صورت عمل ميكنه كه هر وقت يكي از دكمه هاي عملگر زده شد (+و-و*و/)
بايد چك بشه كه آيا عددي وارد شده تا حالا يا نه.
اگر كاربر عدد رو وارد كرده برنامه بررسي ميكنه كه آيا متغير ما عددي رو ذخيره كرده يا نه
اگر متغير مقداري رو ذخيره نكرده اونوقت ما ميايم عددي رو كه كاربر وارد كرده رو ميزاريم تو متغير
اگر متغير مقداري رو تو خودش ذخيره كرده باشه ميايم عددي رو كه كاربر وارد كرده رو با توجه به دكمه ي عملگر زده شده با عدد توي متغير (+و-و*و/) ميكنيم و حاصل رو دوباره ميزاريم توي همون متغير

حالا هر وقت كاربر دكمه ي = رو زد ما مقدار توي متغير رو نمايش ميديم

خيلي راحت تر و بهتر از كتابت
يه دونه متغير هم بيشتر استفاده نكرديم

Masoudmch
پنج شنبه 18 اسفند 1390, 20:32 عصر
(اول توی پرانتز بگم، میدونم تاپیک قدیمیه، ولی خب بازم خیلیا به این مشکل برمیخورن...)

این روشی که اشاره کردید و فرمودید آسون تره، مسلما از یک سری توابع دیگه استفاده میکنه که توی کتاب درسی (برنامه سازی 1) نیست.

ما میخواییم:
1-وقتی روی یکی از شماره ها کلیک شد، اون شماره توی یک متغیر ذخیره بشه
2-وقتی روی یکی از عملگر ها کلیک شد، نوع اون عملگر مشخص بشه

(خب! تا اینجا، فقط یک عدد و یک عملگر گرفتیم! در حالی که در این روش گفته شده بود که اینجا محاسبه انجام میشه! اصلا عدد دومی در کار نیست!!)

3-وقتی روی دومین شماره کلیک شد، مقدار اون هم در لیبل (یا تکست باکس) بمونه
4- و وقتی روی مساوی کلیک شد، اون متغیر ذخیره شده در مرحله 1، با مقدار عددی (val) تکست باکس عمل کنه و بسته به نوع عملگر، محاصبه را انجام بده...

shahabbasic
پنج شنبه 18 اسفند 1390, 22:42 عصر
بفرمایید درست شد
83865