掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
構造体へのRtlMoveMemoryでOutOfMemory? (ID:100285)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> Dim lpFileMap As Integer '共有メモリのマッピングアドレス そういった物に対しては、IntPtr 型を使うべきかと。 > ご指摘いただけますでしょうか。 ソースから想像すると、共有メモリから得たい値は ANSI 形式の文字列の ようですが、そこに含まれるデータは、ASCII 文字だけですか? それとも、2バイト文字を含んだ Shift_JIS データでしょうか? もし、2バイト文字を含んでいるのだとしたら、構造体に指定している DataLength というのは、「バイト数」と「文字数」のどちらの意図ですか? > VBでの構造体及び共有メモリについて明るくないので 構造体のマーシャリングは、それなりの前提知識が必要ですよ。 特に、文字列を含んでいるような場合には。 構造体の前に、単純なバイト配列で受け取る事から始めては如何でしょう? たとえば、 Dim ptr As IntPtr = [参照先のアドレス] Dim buf(DataLength - 1) As Byte Marshal.Copy(ptr, buf, 0, DataLength) Dim str As String = System.Text.Encoding.GetEncoding("Shift_JIS").GetString(buf) のようにするとか。 (検証しようが無いので、保証はできませんけれども) > 上のプログラムで何かしら原因となる箇所がありましたら まずは、プログラムの仕様(共有メモリ上のデータ配置など)を 提示してもらわないことには、どうにもならないです。 (属性の指定が正しく行われているかどうかすら、判断できません) そもそも、STRUCT_DATA の実装意図もわかりません。 (1) getMsg とくれば、対義語 は setMsg だと思うのですが、 なぜ、msgSet なのでしょうか? (まぁ、これは本題とは無関係ですが) (2) msg フィールドを使って、文字列にアクセスできるというのに、 わざわざ、プロパティ/メソッドを用意しているのはなぜですか? (3) 代入をメソッド化しているのに、取得がメソッドでは無いのは何故ですか? (というよりも、プロパティを Get/Set の両対応にすれば済むような) >> やじゅさん ByVal Source As Long ではマズイのでは…?
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.