ページ 1 / 1
VB 用のコードを AB 用に変換してください
Posted: 2005年7月27日(水) 11:58
by M.S.
ある月刊誌に載っている計算プログラムの VB のコードを、
AB 使用に書き換えてください。
コード: 全て選択
Result.Caption = Str(Val(Input.Text) _
+ Val(Input2.Text))
コード: 全て選択
If Val(Input2.Text) = 0 Then
Result.Caption = "0 では割れません"
Else
Result.Caption = Str(Val(Input1.Text) _
/ Val(Input2.Text))
End If
注意 :
「Iuput1」と「Input2」は AB でいう「エディット ボックス」の ID です。
「Result」は AB でいう「スタティック テキスト」の ID です。
「+ , /」は VB の算術演算子です(AB の算術演算子と同じです)。
Re: VB 用のコードを AB 用に変換してください
Posted: 2005年7月27日(水) 12:45
by Mario2
コード: 全て選択
Dim a As String,b As String,c As String
GetDlgItemText(hMainWnd,EditBox1,b,255)
GetDlgItemText(hMainWnd,EditBox2,c,255)
a=Str$(Val(b) + Val(c))
SetDlgItemText(hMainWnd,Static1,a)
コード: 全て選択
If Val(c)=0 Then
SetDlgItemText(hMainWnd,Static1,"0 では割れません"
Else
a=Str$(Val(b) / Val(c))
SetDlgItemText(hMainWnd,Static1,a)
End If
2つあわせると
コード: 全て選択
Dim a As String,b As String,c As String
GetDlgItemText(hMainWnd,EditBox1,b,255)
GetDlgItemText(hMainWnd,EditBox2,c,255)
a=Str$(Val(b) + Val(c))
SetDlgItemText(hMainWnd,Static1,a)
If Val(c)=0 Then
SetDlgItemText(hMainWnd,Static1,"0 では割れません"
Else
a=Str$(Val(b) / Val(c))
SetDlgItemText(hMainWnd,Static1,a)
End If
だと思います。(コンパイル未確認(^_^;;;))
(Static1が「スタティック テキスト」のID、EditBox1,EditBox2が「エディト ボックス」のIDです)
それと、「String」は「BytePtr」かも知れませんが、自分はそこまでは分かりません。
(変数の「a」,「b」,「c」は、ご自由に変えていただいてもかまいません。)
間違えていたらごめんなさい。
Re: VB 用のコードを AB 用に変換してください
Posted: 2005年7月27日(水) 12:57
by M.S.
コンパイルはできるのですが、0 での除算ができません。
Re: VB 用のコードを AB 用に変換してください
Posted: 2005年7月27日(水) 13:00
by M.S.
コード: 全て選択
Dim a As String,b As String,c As String
GetDlgItemText(hMainWnd,EditBox1,b,255)
GetDlgItemText(hMainWnd,EditBox2,c,255)
a=Str$(Val(b) / Val(c))
SetDlgItemText(hMainWnd,Static1,a)
If Val(c)=0 Then
SetDlgItemText(hMainWnd,Static1,"0 では割れません"
Else
a=Str$(Val(b) / Val(c))
SetDlgItemText(hMainWnd,Static1,a)
End If
を、
Dim a As String,b As String,c As String
GetDlgItemText(hMainWnd,EditBox1,b,255)
GetDlgItemText(hMainWnd,EditBox2,c,255)
If Val(c)=0 Then
SetDlgItemText(hMainWnd,Static1,"0 では割れません"
Else
a=Str$(Val(b) / Val(c))
SetDlgItemText(hMainWnd,Static1,a)
End If
にしたらできました。
あれ…?
Posted: 2005年7月27日(水) 15:07
by hira
コード: 全て選択
Dim a As String,b As String,c As String
GetDlgItemText(hMainWnd,EditBox1,b,255)
GetDlgItemText(hMainWnd,EditBox2,c,255)
bとcにメモリが確保されてないっぽいですが…?
変数宣言後、GetDlgItemTextより前に
コード: 全て選択
b=ZeroString(255)
c=ZeroString(255)
を入れてください。
あるときは正しく動いているように見えても、別のときはアクセス違反になることがありますので…。
Re: あれ…?
Posted: 2005年7月27日(水) 22:30
by M.S.
確かに、桁数が10文字くらいから、計算するとアクセス違反になりましたが、
hira 様が教えて下さったコードを入力するとアクセス違反のエラーがなくなりました。
どうも、ありがとうございました。