Active Basicを使ってプログラムを作成しています。
まだまだはじめたばかりの初心者なので、電卓プログラムを作ってみようと決めて、作り始めました。
しかし、EditBoxから文字列を数字として取得する部分がどうしても出来ません。
Dim Buffer As BytePtr
Dim Length As Long
Length = GetWindowTextLength(hEditBox)
Buffer = calloc(Length+1)
GetWindowText(hEditBox,Buffer,Length+1)
MessageBox(hEditBox,Buffer,NULL,MB_OK)
free(Buffer)
こういったコードを指定してみました。
文字列としては取得できますが、数字としての取得が出来ず、
取得した後、足したり引いたりすると、文字化けが生じます。
EditBox内の数字をそのまま変数にコピーする方法を御願いします。
分かりにくくてすみません・・・
数値として取得するなら Val関数で数値に変換すればいいでしょう
Dim nData as Integer
nData = Val( Buffer )
といった具合でしょう
質問者
補足
ご回答、ありがとうございます。
助かりました。
後、
'EditBoxの内容を取得
Dim Buffer As BytePtr
Dim Length As Long
Length = GetWindowTextLength(GetDlgItem(hMainWnd,EditBox1))
Buffer = calloc(Length+1)
GetWindowText(GetDlgItem(hMainWnd,EditBox1),Buffer,Length+1)
SaishoKazu=Val(Buffer)
Length = GetWindowTextLength(GetDlgItem(hMainWnd,EditBox3))
Buffer = calloc(Length+1)
GetWindowText(GetDlgItem(hMainWnd,EditBox3),Buffer,Length+1)
AtoKazu=Val(Buffer)
free(Buffer)
'計算処理
If Kigo="+" Then
Ans=SaishoKazu+AtoKazu
End If
SetDlgItemText(hMainWnd,EditBox4,Ans)
と記述してみたのですが、上手いことEditBox4に文字が表示されません。
SaishoKazu AtoKazu Ansはそれぞれグローバル変数部分にDouble型で定義しています。
もし分かりましたら、ご教授願いたいのですが
補足
ご回答、ありがとうございます。 助かりました。 後、 'EditBoxの内容を取得 Dim Buffer As BytePtr Dim Length As Long Length = GetWindowTextLength(GetDlgItem(hMainWnd,EditBox1)) Buffer = calloc(Length+1) GetWindowText(GetDlgItem(hMainWnd,EditBox1),Buffer,Length+1) SaishoKazu=Val(Buffer) Length = GetWindowTextLength(GetDlgItem(hMainWnd,EditBox3)) Buffer = calloc(Length+1) GetWindowText(GetDlgItem(hMainWnd,EditBox3),Buffer,Length+1) AtoKazu=Val(Buffer) free(Buffer) '計算処理 If Kigo="+" Then Ans=SaishoKazu+AtoKazu End If SetDlgItemText(hMainWnd,EditBox4,Ans) と記述してみたのですが、上手いことEditBox4に文字が表示されません。 SaishoKazu AtoKazu Ansはそれぞれグローバル変数部分にDouble型で定義しています。 もし分かりましたら、ご教授願いたいのですが