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も見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
チョコミントアイス
得意ですか?不得意ですか?できれば理由も教えてください。
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
昨日見た夢を教えて下さい
たまにすごいドラマチックな夢見ること、ありませんか? 起きてからも妙に記憶に残っているような、そんな夢。
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
VB6でユーザー定義型がNothingかどうか調べるには?
Visual Basic(VBA)
-
VB6 配列を初期化したい
Visual Basic(VBA)
-
Visual Basic 6.0 コンボボックスのChangeイベントが発生しません
Visual Basic(VBA)
-
-
4
VBの「As String * 128」とは?
Visual Basic(VBA)
-
5
VBAで配列をまるごとコピー
Visual Basic(VBA)
-
6
構造体をコレクションに入れて扱いたいのですが…
コレクション
-
7
VB6.0-整数と余りを求める
Visual Basic(VBA)
-
8
VisualBasic6.0のFormat関数でmSecを表示したい
Visual Basic(VBA)
-
9
配列を関数に渡す方法
Visual Basic(VBA)
-
10
VB6とVB.NETでNullの扱いが違う?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
VBA(メモリ展開)
-
グラフの「項目軸ラベルに使用...
-
構造体配列の安定なソート
-
コンボボックスのインデックス...
-
配列をランダムに並び替えても...
-
Segmentation Fault (メモリ制限?)
-
VBA ReDim と ReDim Preserve ...
-
スロットマシンの判定方法(VB...
-
vba フィルター 複数条件 3つ以...
-
C#でbyte配列から画像を表示さ...
-
XMLでデータとして画像を指定す...
-
C#でテキストボックスに入力し...
-
VB2005でACCESSの処理
-
Access2007でアプリケーション...
-
VBSでADOを使ってaccessのテー...
-
アクセス ステータスバーの文...
-
ACCESSで日別集計をする場合
-
RGBとHSLを相互変換する際の端...
-
アクセスでウェブ上のデータを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
エクセルでXY座標に並べられた...
-
C#でbyte配列から画像を表示さ...
-
配列のペースト出力結果の書式...
-
配列の中の最大値とそのインデ...
-
Excel2010のinputboxで複数デー...
-
Dir関数で読み取り順を操作でき...
-
大量の変数を定義するにはどう...
-
Redim とEraseの違いは?
-
VB6のメモリ解放に関して
-
CheckBoxの配列化
-
COBOLの基本的な事なので...
-
コンボボックスのインデックス...
-
構造体配列の特定のメンバーをF...
-
構造体配列内の文字列検索のよ...
-
定数配列の書き方
-
Excelのメモリ(配列)の上限は2G...
-
Segmentation Fault (メモリ制限?)
-
複数のtextboxの処理を一括で行...
おすすめ情報