掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
fortran EQUIVALENCEをvbに移植するには? (ID:76457)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
私自身はFortranを知らないのですが、EQUIVALENCEについて調べてみると、 「複数の変数に同一アドレスを共有させるための定義。FORTRANでは 実数と整数の変数を共有させて、型変換なしに(ビットパターンの 変更なしに)データを割りつけたい時などに使用される。」 という解説をしているページを見つけました。 う〜ん。この解説の通りだとすると、該当するようなVBの 命令はありませんね。(CならUNIONやポインタで置き換えられそうですが) > vbのポインタはできるだけ使いたくなく,困惑しております。 まぁ基本的に、VBにはポインタという考え方はありませんし。 > EQUIVALENCE (NT(1),J),(NT(2),K) えぇと。配列NT()の1番目の要素を変数Jと共有し、 2番目の要素をKと共有する、ということでしょうか? 単純にデータ型の変換だけが目的であれば、ユーザー定義型に 送ってからLSetステートメントで変換するとか、もしくはいったん バイナリファイルとしてPut#してから、あらためて別の変数で Get#するなどすれば変換できます。 (あるいは、RtlMoveMemory APIでメモリイメージを転写するか) データを変換させるというよりも、変数を共有させるのが目的の場合…… たとえば、NT(1)を変更するとJも変更されるようにしたいとか……ならば、 変数部をプロシージャかオブジェクトとしてカプセル化するようにすれば 一応は実現できます。(頗るまわりくどいコードになりますけれどね) > For I = 1 To 4 > J = NT(I) > next これは単純に、「J=NT(4)」と同じ結果になってしまいますよ。 なぜなら上記を展開すると、 J=NT(1) J=NT(2) J=NT(3) J=NT(4) という意味になるからです。結局、最後の値しか得られないわけです。 たとえば、「NT(1)をJにいれて、NT(2)をKに入れる」なら、 Forループでは処理できませんから、 J = NT(1) K = NT(2) のように書く事になるでしょう。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.