
VB6で、一次元配列と二次元配列の相互コピーをしたいです。
(1)元々下記のような宣言をもつ配列がありました。
Public Type TKey
no As String
id As String
code As String
atr() As String
End Type
Public Type tr
Key As TKey
atr() As String
abc As Boolean
End Type
Public gtr() As tr
(2)コピー用に、下記のような二次元配列用宣言をつくりました。
Public Type TKey2
2no As String
2id As String
2code As String
a2tr() As String
End Type
Public Type 2tr
Key22 As TKey2
atr22() As String
abc22 As Boolean
End Type
Public g2tr() As 2tr
(3) (1)から(2)にデータを複製したり、
(4) (2)から(1)にデータを複製したいです。
今は、下記のように面倒くさいことをしています。
dim gtr(maxcnt)
ReDim Preserve g2tr(500, maxcnt)
ループ
g2tr(cnt, i).Key22.2code = gtr(i).Key.code ・・・(3)
gtr(i).Key.code = g2tr(j, i).Key22.2code ・・・(4)
今は上記を全ての宣言の配列に実行しています。
なにかもっと効率のよい方法はないでしょうか。
(1)の配列は、1~500くらいはあり、不定です。
No.2ベストアンサー
- 回答日時:
構造体のメンバーが同じ構成ならばランダムアクセスファイルを使ってベタに流してやればいいのでは
' ファイル番号は FreeFileで取得したほうがいいかも
Open "sample.bin" for random as #1
' 書き出す位置は適宜修正してください
for n = 0 to 20
' レコード番号を省略すると 1番から順に出力します
put #1,,g2tr(n,1)
next
' 読み出す位置の修正も ・・・
for n = 0 to 20
' レコード番号は1番からなので n+1で指示
Get #1, n+1, gtr(n)
next
close
No.1
- 回答日時:
のような質問回答があるが、参考になりませんか。ここまでは通常の有名な話。
ー
配列で次元が違うものは、1つの代入式のような表現では無理でしょう。
実際コンピュターが内部でやることは、1つづつ両配列間で対応する要素に代入することは変わらなくて、プログラムコーディング上の見かけで、そういう代入の体裁に持ち込めるかどうかだが、新しい言語概念を作る(コピーメソッドを作るようなこと)ようなことになるだろうから、VB6では無理と思う。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
Dir関数で読み取り順を操作でき...
-
エクセルでXY座標に並べられた...
-
CheckBoxの配列化
-
vba フィルター 複数条件 3つ以...
-
レコードセットの中身を配列に...
-
配列の中の最大値とそのインデ...
-
VBA フォルダ内のファイルを、...
-
セル範囲から一次元配列の生成
-
C#でbyte配列から画像を表示さ...
-
C言語
-
VB.NETの配列にExcelから読み込...
-
VBで配列に格納されているデー...
-
COBOLの基本的な事なので...
-
コンボボックスのインデックス...
-
構造体配列
-
SPLIT関数
-
VBA: Select Caseを短くしたい
-
VB.NETにて、構造体へデータを...
-
配列をランダムに並び替えても...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
C#でbyte配列から画像を表示さ...
-
エクセルでXY座標に並べられた...
-
Dir関数で読み取り順を操作でき...
-
vba フィルター 複数条件 3つ以...
-
配列のペースト出力結果の書式...
-
複数のtextboxの処理を一括で行...
-
Excelのメモリ(配列)の上限は2G...
-
配列の中の最大値とそのインデ...
-
大量の変数を定義するにはどう...
-
Excel2010のinputboxで複数デー...
-
COBOLの基本的な事なので...
-
構造体配列内の文字列検索のよ...
-
VBAでMODE関数をつくる
-
Redim とEraseの違いは?
-
VBScriptでCSVファイルを読み出...
-
VB6のメモリ解放に関して
-
VB.NETの配列にExcelから読み込...
-
Segmentation Fault (メモリ制限?)
-
ActiveReports(アクティブレポ...
おすすめ情報