ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年3月29日(金) 03:04

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 2 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2005年6月07日(火) 01:12 
オフライン
Site Admin

登録日時: 2005年5月30日(月) 15:08
記事: 535
引用:
多次元配列を引き渡すときは、仮引数に配列要素を指定する必要があります。具体的には、下記のように値参照で配列ポインタを引き渡します。コンパイラは、仮引数の配列指定(要素のカッコ)を認識した時点で、そのパラメータが配列ポインタの値参照であると解釈します。

実引数には、配列名のみを指定します。カッコ及び要素の指定は必要ありません。

この引き渡し方法は、具体的には配列のポインタのみを引き渡しています。よって、関数内で配列の内容が変えられると、その変更は実引数にも影響します。この引き渡し方法は多次元配列の引き渡しに有効な手段ですが、1次元配列に対しても行えます。
コード:
#N88BASIC

Dim data[9,9] As Long

Sub GetData(a[9,9] As Long)
    Dim i As Long, j As Long
    For j=1 To 9
        For i=1 To 9
            a[j,i]=i*j
        Next
    Next
End Sub

Sub ShowData(a[9,9] As Long)
    Dim i As Long, j As Long
    For j=1 To 9
        For i=1 To 9
            Print Using "###";a[j,i];
        Next
        Print
    Next
End Sub

'両者の関数ともに、配列ポインタを引数として渡す
GetData(data)
ShowData(data)
↑はヘルプセンターの一部を抜粋したものです。

Ver4.01.02で、配列(多次元配列も可)を関数パラメータとして引き渡せるように改良しました。具体的には、配列ポインタの引き渡しになります。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2005年6月07日(火) 13:30 
オフライン
Site Admin

登録日時: 2005年5月30日(月) 15:08
記事: 535
Ver4.01.02の段階では、DLL関数に多次元配列を渡すことができないので、こちらは次回のバージョンアップで対応しようと思います。

現時点では、Declare定義のパラメータをポインタ型に書き換えて、対処してください。

コード:
'--------
' 例
'--------

'DLL用のソース
Function Export Test(k[2,2] As Long)
    MessageBox(0, Str$(k[0,0])+":"+Str$(k[0,1])+":"+Str$(k[1,0])+":"+Str$(k[1,1]), "表示テスト", 0) 
End Function

'メインソース
Declare Function Test Lib "sougi" (k As *Long) As Long

Dim data0[2,2] As Long
data0[0,0]= 1
data0[0,1]= 2
data0[1,0]= 3
data0[1,1]= 4
Test(data1)


通報する
ページトップ
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 2 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[9人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean