- PR -

固定長構造体の受け渡し

投稿者投稿内容
未記入
会議室デビュー日: 2006/08/07
投稿数: 5
投稿日時: 2006-08-07 11:22
<StructLayout(LayoutKind.Sequential)> Structure STRUCT
<VBFixedString(20)> Dim strVal1 As String
<VBFixedString(30)> Dim strVal2 As String
End Structure

Public Sub ExeCute()
Dim strSmpl As STRUCT

Call Test1(strSmpl)

End Sub

Test1中でC言語のvoidポインタで受け渡しをして、キャストをするような
処理ができればと思っています。

[ メッセージ編集済み 編集者: 未記入 編集日時 2006-08-08 00:01 ]
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2006-08-07 11:38
Marshal.StructureToPtr メソッドあたりは試してみました?
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2006-08-07 12:04
やりたいことが今ひとつ見えませんね。
バイト列経由で別の型として扱いたいということでしょうか?
未記入
会議室デビュー日: 2006/08/07
投稿数: 5
投稿日時: 2006-08-07 13:25
すみません、色々伝わりきらないようで。。

やりたいことは、型の異なった構造体を1つのメソッドで受け取り
内部で構造体の種類を判別し、その構造体のメンバに対して処理を行いたいです。

で、一番最初に私が考えたのはIntPtrで受けて、キャストできるのかな・・・
とか思ったりしてましたが・・・
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2006-08-07 14:49
間に共通の親インターフェースをかまし、そのインターフェースに対してメソッドを呼ぶ。
メソッド内では、TypeOfで型を判定して、処理を分岐すればいいんじゃないの
コード:
IMyStructという親インターフェースを定義
MyStruct1 Implements IMyStruct
MyStruct2 Implements IMyStruct

...

処理の記述は、
Public Sub MyMethod(MyData As IMyStruct)
  IF TypeOf(MyData) MyStruct1 THEN
    ....
  ElseIf TypeOf(MyData) MyStruct2 THEN
    ....
  End If
End Sub

呼び出し側は、
my1 = New MyStruct1
my2 = New MyStruct2

MyMethod(my1)
MyMethod(my2)



コードはこんな風になるかなっていうイメージでとらえてね(VB.Netよ〜わからんし)
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-08-07 17:42
Hongliang さんも回答されているようですが...
_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
会議室デビュー日: 2006/08/07
投稿数: 5
投稿日時: 2006-08-08 09:01
Marshalを使うことで解決しました。
ありがとうございます。
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2006-08-08 09:08
引用:

未記入さんの書き込み (2006-08-08 09:01) より:
Marshalを使うことで解決しました。
ありがとうございます。


Marshalのなにをどう使って解決したのか、もう少し具体的に結果を報告すべきです。

また、マルチポストをした掲示板にも、どのように解決したのか報告しましょう。
放置は最低行為です。

スキルアップ/キャリアアップ(JOB@IT)