• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:「VB4.0の「LSet」と同等の機能をVB2008で実行するには?」のリストを修正します)

「VB4.0の「LSet」と同等の機能をVB2008で実行するには?」のリストを修正します

このQ&Aのポイント
  • VB4.0の「LSet」と同等の機能をVB2008で実行する方法を知りたい
  • VB4.0の「LSet」以外の機能はVB2008で実行できるが、LSetのコンバージョン方法がわからない
  • リストの修正を行いたいので、VB4.0の「LSet」の代替案を教えてほしい

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

buf1kの構造体の中身は ・・・ ファイルはレコード単位を設定しているのですか 当方のテストでは 自動変換で変換されたコードを使ってます VB4/6コード Private Type buf1k   buf(1023) as Byte End Type VB2005コード   Private Structure buf1k     <VBFixedArray(1023)> Dim buf() As Byte     Public Sub Initialize()       ReDim buf(1023)     End Sub   End Structure といった具合ですが ・・・ 2005側の使用時に dim myBuf as buf1k dim kdata as Tpkyokudef myBuf.Initialize() FileGet( #fno, myBuf ) Dim objPtr As IntPtr = Marshal.AllocHGlobal(Len(MyBuf)) Marshal.Copy(MyBuf.buf, 0, objPtr, MyBuf.buf.Length) kdata = Marshal.PtrToStructure(objPtr, GetType(Tpkyokudef)) Marshal.FreeHGlobal(objPtr) といった具合ですが ・・・ 構造体Tpkyokudef には <StructLayout(LayoutKind.Sequential)> _ といったような属性を付けたほうがいいかもしれません

Junko20546
質問者

お礼

ありがとうございました。 「Private Structure buf1k <VBFixedArray(1023)> Dim buf() As Byte Public Sub Initialize() ReDim buf(1023) End Sub End Structure」 これを 「Dim myBuf (1023) As byte」 に置き換えることで 「kdata」に値がきました。 前回のhttp://oshiete1.goo.ne.jp/qa4376846.htmlの回答でも「kdata」に値がきました。 当初、kdataに値が入らなかったときは、 構造体Tpkyokudefのメンバーに配列を定義していたからでした。 この配列をshortの並びにかえるとkdataに値が入りました。 redfox63さまをはじめ皆様には大変なご迷惑をおかけしました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

前の質問 http://okwave.jp/qa4376846.html?ans_count_asc=20 との関係は? 前の質問は閉じなくてよいのですか。

Junko20546
質問者

お礼

ありがとうございます。 リストを間違えたので訂正しました。 Public Type Tpstndef を Public Type Tpkyokudefに訂正です。 質問の内容は同じです。 ご忠告ありがとうござました。

関連するQ&A

専門家に質問してみよう