掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
配列状データをまとめてシフトするには? (ID:99812)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ということは、基本的に参照カウンタが有効に働いているオブジェクトは、スコープが無くなったときに勝手に解放されるので、早めに開放したいという理由が無ければほっとけば良いということですね。 ちなみにシフト部はガッさんのを参考に以下のようにしてみました。 Public Sub DataShift(Optional ByVal n As Long = 1, Optional ShiftDirection As eShiftDirection = shift_Up) If n < 0 Then Exit Sub If n > mList.Count Then n = mList.Count Select Case ShiftDirection Case eShiftDirection.shift_Up ' 順方向送り For n = n To 1 Step -1 Call mList.Remove(mList.Count) Call mList.Add(CreateGraphFormat, Before:=1) Next Case eShiftDirection.shift_Down ' 逆方向送り For n = n To 1 Step -1 Call mList.Remove(1) Call mList.Add(CreateGraphFormat) Next End Select End Sub < For Num = Num To 1 Step -1 ってあたりが小憎らしいですね。 今後パクらせていただきます (・ー・)b 今件の起こりは、たとえば件数が増えて1万×10個のデータがあるとして、データの単純な一括シフトで10万回変数にアクセスするのがカコワルイ(もちろん独断と偏見)と思ったからなんです。 提示していただいた方法を含めると ・ユーザー定義型のアライメントを利用してメモリコピーする ・リストコントロールで管理する ・データーベース(レコードセット)として管理する ・オブジェクト配列のリングバッファとしてインデックスポインタを管理する ・コレクションとして管理する どれでも必要な機能は実装できましたが、コレクションを利用する方法が一番シンプルでパフォーマンスも悪くないという結果になりました。 コレクションはかなり使い道がありそうですねぇ。 以前、ユーザー定義型変数の配列でデータ管理しようとして64kByteの壁にぶち当たって泣く泣く分割したことがあります。 クラスを定義してコレクションにしてしまえばスマートですね。 なにはともあれ、とりあえずは目的達成ですので、ひとまず解決とさせていただきます。 まだ、別の面白い(?)方法があれば書き込みお願いします。 魔界の仮面弁士さん、GODさん、ガッさん、ありがとうございました。 今回も勉強になりました。 わたしのメモリコピーが一番アクロバティックでしたね。 (´▽`*)アハハー・・・
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.