掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
MemoryMappedFileを利用したデータの転送に関して (ID:150261)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
yTakeです 一度、閉じてしまいましたので、別に始めます。 MemoryMappedFileは成功しているとお伝えしていましたが、あるデータが正しく転送できていないので、ご教授願えれば幸いです。 MemoryMappedFileで転送するデータは構造体で可変長な配列を含んでいます。 構造体は簡単にいうと次の様に定義しています type RMMF_MTX = Record dimX : Word; dimY : Word; DPI : Word; MTX : Array [ 1 .. 3 ] of Array of Array of Word; END; 転送時にエラーはありません。 読み出し時もエラーはありません。 また、可変長ではない部分(つまり、dimX, dimY, DPI)に関しては正しく転送されています。 また、可変長の配列のサイズは、別のMemoryMappedFileで予め取得しています。(この時も正常に転送) 読み出しは、 var ptr : PWord; として置いて、 GetMem( ptr, siz ); CopyMemory( ptr, P, siz ); rcv_mtx.dimX := ptr^; inc( ptr ); rcv_mtx.dimY := ptr^; inc( ptr ); rcv_mtx.DPI := ptr^; inc( ptr ); for k := 1 to 3 do for k := 1 to 3 do for k := 1 to 3 do begin rcv_mtx.MTX[ k ][ i, j ] := ptr^; inc( ptr ); end; の様にしています。 読み出し自体はエラーなく行われますが、値が、VCL側で登録した値と異なっています。 ポインターがズレてしまっている? 原因が分かりません。 よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.