通信系PGで以下のことを行いたいと思います。
1.初期起動処理として、制御に使用するデータを起動時にメモリに読み込みオブジェクトの形
で常駐させる。
(使用しやすいように、XMLまたはCSVをオブジェクト形式に変換しておきたいです。)
2.電文受信時に受信メインからDLL(確定です)で作成した受信処理が呼び出される。
3.受信処理で、1.のオブジェクトを使用する。
補足:パラメタとして渡すことはできません。
以上のようなことを行う場合、どのような仕組みを使用すればよろしいでしょうか。
お名前は違いますが、おそらくこちらもですね。
http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200410/04100007.txt
何箇所に書いても解答はそう変わらないと思います。
> マルチポストとは、「同じ内容の質問などを複数の掲示板等に書き込むこと」です。
> この行為はマナー違反として嫌われています。マルチポストは行わないで下さい。
こちらの掲示板の「使用上の注意」にも違反しますし、むしろ回答は得られにくくなる
一方だと思います。
すいません。
よく読んでいませんでした。
以後気をつけます。
>(使用しやすいように、XMLまたはCSVをオブジェクト形式に変換しておきたいです。)
すみませんが意味不明???
すいません。説明不足でした。
ディスク上にあるXMLまたはCSVのファイル内容を
メモリ上に展開するときはクラスオブジェクトのメンバ
変数にセットして利用したいということです。
なにに躓いてるのかさっぱりわかりません。
仕様を丸投げするのではなく、
なにができてなにができないのか
その辺を明確にしてください。
つまりはDLLにパラメータを渡すことなく
DLLから呼び出し元が管理するメモリ空間のデータを
参照したいのだけど、どんなやり方がありますか?
という質問ではないかと・・・
CreateFileMapping MapViewOfFile ではダメ?
通信系PGで以下のことを行いたいと思います。
>1.初期起動処理として、制御に使用するデータを起動時にメモリに読み込みオブジ
>ェクトの形で常駐させる。
>(使用しやすいように、XMLまたはCSVをオブジェクト形式に変換しておきたい
>です。)
これは置いといて
>2.電文受信時に受信メインからDLL(確定です)で作成した受信処理が呼び出さ
>れる。
実際にレシーブするのはDLLの中の関数ですよね
>3.受信処理で、1.のオブジェクトを使用する。
「受信処理」とはDLLの中の関数の一部ですよね
であれば、DLLの関数の中でデータ読み込みすればいいのではないのでしょうか
>補足:パラメタとして渡すことはできません。
ここで一口に言う「パラメタ」とはどんなことを指すのでしょうか
もし、引数でハンドル渡し、値渡し、アドレス渡し すべて拒否されるんだったら
無理だと思いますけど、どうでしょうか
「はる さん」の回答も無駄になってしまうと思います
出題されているのは、値渡しがだめなだけで、ほかは良いんじゃないの
>DLL(確定です)
って良い言ってるけど、メインのEXEだけ作りたいのでしょうか
共有メモリにオブジェクトを配置する仕組みがIBMのHPにありましたが、
複雑で面倒な処理に見えるし今回のケースに当てはめることが可能か判断付
きませんでした。
オブジェクト形式に固執しないで、シリアライズ(XMLファイル)、
構造体(CSVファイル)の仕組みを利用して共有メモリに持つことを検討
したいと思います(この方が他の人がソースを見てもわかりやすいですよね)。
共有メモリから取り込むときにオブジェクト形式に変換しようと思います。
適切なご意見、有り難うございました。
背景の推測1
・プログラム作成の依頼を受けた
・EXEとDLL両方とも新規開発
・しかし、EXEとDLLのインターフェースのみ決められている。
お勧め
・インターフェースを変更することを提案する。
背景の推測2
・プログラム作成の依頼を受けた
・通信用EXEと初期設定用EXEが分離している。
・初期設定用EXEとDLLを新規開発
・当然通信用EXEとDLLのインターフェースは決められていて、変更不能。
お勧め
・DLLに初期設定用EXEとのインターフェースを追加する。(またはそれを提案する)
解決されたようでなによりです、が
何を指してオブジェクトといってますか?