超初心者です。できれば分かりやすくお願いします。
VBAなどのもので使用者から数値などを入力してもらうダイアログボックスを出す方法はありますが、ActiveBasicで出す方法はありますか?
簡単に文字列や数値を入力してもらう方法でもいいのでしっていたらよろしくお願いします。
InputBox
数値を入力してもらう事が目的なら、#N88BASIC等+Input命令で十分かもしれません。
ダイアログを作る場合は、エディットボックス1個コマンドボタン1個からなるウインドウを作り入力して貰って、
ボタンを押した時に入力されている文字列を回収するコード(下のような)を実装すればいいと思います。
コード: 全て選択
#N88BASIC
Dim A As String,B As Double
Input "文字列を入力",A
Print "入力された文字列 = ";A
Input "数値を入力",B
Print "入力された数値 = ";B
Sleep(-1)
ボタンを押した時に入力されている文字列を回収するコード(下のような)を実装すればいいと思います。
コード: 全て選択
Dim InputBox_ReturnString As String
Sub InputBox_CommandButton1_Click()
Dim A[255] As Byte
GetWindowText(GetDlgItem(hInputBox,EditBox1),A,255)
InputBox_ReturnString=MakeStr(A)
EndDialog(hInputBox,0)
End Sub
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ダイアログを表示するあたりまではわかりますか?
コード: 全て選択
'ダイアログが終了した時、このString型変数に入力された文字列が格納されている。
Dim InputBox_ReturnString As String
Sub InputBox_CommandButton1_Click()
'文字を取得するためのバッファを用意
Dim A[255] As Byte
'最大文字バイト数に255を指定して、[InputBox]の[EditBox1]から文字列をロードし、用意してあったバッファにストア。
GetWindowText(GetDlgItem(hInputBox,EditBox1),A,255)
'取得した文字列を、String型に変換。戻り値取得用のグローバル変数に代入。
InputBox_ReturnString=MakeStr(A)
'[InputBox]ダイアログを終了する。
EndDialog(hInputBox,0)
End Sub
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
配列とかポインタとかについて簡単に説明する事は難しくなっているのですが・・・
二番目のは、DialogBox関数を参照してください。Samplesフォルダ内のプロジェクト[TextEditor]が参考になるかもしれません。
省略されました・・全てを読むにはここを押してください [ここをクリックすると内容が表示されます]
まず、プログラムに割り当てられたメモリを読み書きするには、どこを参照するかを示すポインタ(メモリ内の位置を示す番号)が必要になります。
アプリ側が変数名に対してメモリを割り当てる事ができるのは、一つのメモリ番号に対して不特定多数の変数名が割り当てられていない事が大きな理由です。
さて、配列はどのようにして存在しているかと言うと、ActiveBasicの場合、一つの変数名に対して、連続した(大きな)メモリを割り当てる事で存在しています。
こんな感じ
[ ]←元のメモリ
↓
[j][A ][x]←変数名にメモリを割り当てたところ(ここでは、Aが配列)
そして、Aの真ん中のあたりはどうやってアクセスするのかと言うと、
例えばiにアクセスする時に
GetByte(i)
と書くとすると、
GetByte(A+20)
のように、上手に場所を示す事でアクセスします。
ただ、一々こう書くのは非常に面倒なので、
result=GetByte(A+20)
と書くところで、
result=A[20]
と書いてもいい事になっています。ただそれだけの話です。
ここで、Aにはメモリの番号を指し示す値が入っていて、つまりそれはポインタなので
A[N] As ByteとA As BytePtrは、
プログラム中では同じように書く事ができます。
後者で宣言した場合はアプリが全自動で領域を確保してくれているわけではないので少し手間がかかりますが、
そのかわり、配列の長さをあとから環境の許す限り自由に変更する事ができます。
calloc,malloc,free,realloc等を参照してみてください。
アプリ側が変数名に対してメモリを割り当てる事ができるのは、一つのメモリ番号に対して不特定多数の変数名が割り当てられていない事が大きな理由です。
さて、配列はどのようにして存在しているかと言うと、ActiveBasicの場合、一つの変数名に対して、連続した(大きな)メモリを割り当てる事で存在しています。
こんな感じ
[ ]←元のメモリ
↓
[j][A ][x]←変数名にメモリを割り当てたところ(ここでは、Aが配列)
そして、Aの真ん中のあたりはどうやってアクセスするのかと言うと、
例えばiにアクセスする時に
GetByte(i)
と書くとすると、
GetByte(A+20)
のように、上手に場所を示す事でアクセスします。
ただ、一々こう書くのは非常に面倒なので、
result=GetByte(A+20)
と書くところで、
result=A[20]
と書いてもいい事になっています。ただそれだけの話です。
ここで、Aにはメモリの番号を指し示す値が入っていて、つまりそれはポインタなので
A[N] As ByteとA As BytePtrは、
プログラム中では同じように書く事ができます。
後者で宣言した場合はアプリが全自動で領域を確保してくれているわけではないので少し手間がかかりますが、
そのかわり、配列の長さをあとから環境の許す限り自由に変更する事ができます。
calloc,malloc,free,realloc等を参照してみてください。
二番目のは、DialogBox関数を参照してください。Samplesフォルダ内のプロジェクト[TextEditor]が参考になるかもしれません。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。