AB初心者です。
sub test(a as DoublePtr)
計算
Endsub
sub main()
dim number(10) as double
while 1
test(number)
配列内容の表示とファイル出力
wend
Endsub
main()
と上記の様に受け渡していますが、合っていますでしょうか。
他のプログラムのソースを参考にすると皆さんグローバルで定義されているので、わかりません。
教えてください。
配列のポインタ受け渡しについて
ローカル領域の配列のポインタがちゃんと機能するかはやってみないとわかりませんが、文法的にもあってるし、たぶん大丈夫だと思います。
test関数でアレックス(ArrayIndexOutOfBounds)を起こさないように注意してくださいね?すごく見つけにくいバグに成りえますから。
test関数でアレックス(ArrayIndexOutOfBounds)を起こさないように注意してくださいね?すごく見つけにくいバグに成りえますから。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
コード: 全て選択
Sub test(Byref a As Double)
< 計算 >
End Sub
Sub main()
Dim number(10) As Double
Dim i As Word
For i=0 To 10
test(number(i))
< 配列内容の表示 >
Next i
< ファイル出力 >
End Sub
For~Nextループで配列を一つずつ渡したほうがよいと思います。
配列のポインタが計算に必要なのなら別ですが。
というか、ポインタ渡しじゃなくても参照渡しでいけるんじゃ・・・
まあそれはそれとして、
上記のループ内で何をしたいのかが分かりませんが、while 1
wend
この構文は永久ループを生む可能性があるのでやめた方が良いと思います。
アレックス??私も聞いたことないんですが、横の英語を訳せば何と無く意味はイメージできると思います。> 早速の返信ありがとうございます。
>
> 要は配列の中身を自由に入れ替えを行うサブルーチンを作りたいのです。
>
> アレックスの意味がわかりません(すみません)。。。
> 入れ替えを行っていると計算の処理がだんだん遅くなる気がします。これが、アレックスなのでしょうか???
>
> また、参照渡しという方法を教えていただけませんでしょうか
Array 配列
Index インデックス
Out Of Bounds 領域外
アレイ+インデックス=アレ+クス=アレックス??
配列要素が100あったとして101や-1はABではエラーになるということだと思います。
※エラーでも警告が出ないこともありますので気付きにくい。。。
処理を繰り返し行って、計算速度が遅くなるというのはこれとは別の問題であったり、ABのバグである可能性もあるので現在使用しているABのバージョンなどを記入するなどすると答える方もやり易いかと。。。
参照渡しというのは
コード: 全て選択
Sub test(ByRef a[] As Double)
'計算
End Sub
Sub main()
Dim number(10) As Double
test(number)
End Sub
ポインタを使った方法とほとんど違いはありません。
アレックスの説明を省いてしまってすみませんでした。
JavaのArrayIndexOutOfBoundsException(配列領域外への参照による例外)が語源だったはず。
Javaでは例外を投げてくれるし、受け取れるんですが、AB4では実装されていません。バグ潰しもまだまだ大変だ、という事です。
#同じような語源で、もっと一般的な単語だと「ぬるぽ」(NullPointerException)などがある。
JavaのArrayIndexOutOfBoundsException(配列領域外への参照による例外)が語源だったはず。
Javaでは例外を投げてくれるし、受け取れるんですが、AB4では実装されていません。バグ潰しもまだまだ大変だ、という事です。
#同じような語源で、もっと一般的な単語だと「ぬるぽ」(NullPointerException)などがある。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。