C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

固定長で指定した構造体のキャスト


(過去ログ 5 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■5267 / inTopicNo.1)  固定長で指定した構造体のキャスト
  
□投稿者/ みすた 二等兵(1回)-(2006/08/03(Thu) 09:57:22)

分類:[VB.NET] 


分類:[VB.NET] 

はじめまして、こんにちは、.NET初心者です。。
さっそくですが、

IntPtrで受けた構造体をキャストするにはどうしたよいですが?

例)
Public Class Class1

<StructLayout(LayoutKind.Sequential)> Structure STR_SMP
<VBFixedString(20)> Dim strVal1 As String
<VBFixedString(30)> Dim strVal2 As String
End Structure

Public Sub ExeCute()
Dim strSmpl As STR_SMP
Dim str As String

Call CastSmpl(strSmpl)

End Sub

Public Sub CastSmpl( str as IntPtr )

'ここでキャスト処理を行いたい!!

End Sub
End Class


0
引用返信 編集キー/
■5274 / inTopicNo.2)  Re[1]: 固定長で指定した構造体のキャスト
□投稿者/ Hongliang 軍曹(75回)-(2006/08/03(Thu) 12:11:52)
Hongliang さんの Web サイト

分類:[VB.NET] 

IntPtr ってことはアンマネージドとの相互運用ですかね。

基本的にキャストではなくコピーということになります。
ポインタ・構造体間のコピーを含む各種相互運用のためのメソッドは System.Runtime.InteropServices 名前空間の Marshal クラスに存在しています。

アンマネージドとの相互運用において、VBFixedString/VBFixedArray は役に立ちません。無関係な属性です。
色々沢山の問題が存在するので、まずは MSDN に一通り目を通してください。
http://msdn.microsoft.com/library/ja/cpguide/html/cpconInteropMarshaling.asp
サンプルも豊富に掲載されています。
アンマネージドとの相互運用だけでもちょっとしたボリュームですがね。

0
引用返信 編集キー/
■5275 / inTopicNo.3)  Re[1]: 固定長で指定した構造体のキャスト
□投稿者/ ぽぴ王子 一等兵(34回)-(2006/08/03(Thu) 12:57:33)
ぽぴ王子 さんの Web サイト

分類:[VB.NET] 

マルチ(・A・)イクナイ!
http://dobon.qp.land.to/bbs/cbbs.cgi?mode=al2&namber=501&rev=&no=0

向こうの方の日本語が微妙に変なのが気になる…

0
引用返信 編集キー/
■5350 / inTopicNo.4)  Re[2]: 固定長で指定した構造体のキャスト
□投稿者/ みすた 二等兵(2回)-(2006/08/08(Tue) 09:53:35)

分類:[VB.NET] 

何もルールをわかっていないようで、申し訳ないです。
深く反省しています。

Hongliangの案を元に解決しました。
Marshal.copyを使用しポインタをコピーすることができました。

解決済み
引用返信 編集キー/
■5360 / inTopicNo.5)  Re[3]: 固定長で指定した構造体のキャスト
□投稿者/ ぽぴ王子 一等兵(39回)-(2006/08/08(Tue) 13:06:02)
ぽぴ王子 さんの Web サイト

分類:[VB.NET] 

一応解決したようなのでリンクッ!
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=32665&forum=7

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -