投稿日 | : 2006/12/25(Mon) 09:41 |
投稿者 | : 茄子茄子 |
Eメール | : |
URL | : |
タイトル | : Re^2: VB6.0でのバイナリデータの渡し方について |
レスありがとうございます。
返信が遅れまして申し訳ありません。
> COM メソッドの引数定義が『ByRef foo() As Byte』になっていますか?
> VB6 は、『ByVal foo() As Byte』を処理できませんので。
↑の件、値渡し:○ 、参照渡し:×ということでしょうか?
WEB、参考書等見ながら現象の調査をしてみます。
> > Call HogeIF.HogeMethod(ByteArr) // バイト配列を引数とするメソッド・・・☆
>
> 「'」では無く「//」になっている所に苦笑い…。(^-^;
>
>
> > メソッドの引数としてバイト配列を取る
>
> COM メソッドの引数定義が『ByRef foo() As Byte』になっていますか?
> VB6 は、『ByVal foo() As Byte』を処理できませんので。
>
>
> とりあえず、サンプルという事で。
>
> # あえてゴテゴテと属性を付けまくってみる。
> ---------
> using System;
> using System.Runtime.InteropServices;
>
> namespace HogeHogeDLL
> {
> /// <summary/>
> [Guid("F902FEDF-8146-469a-BF2E-FF03596F2901")]
> public interface IHogehoge
> {
> void HogeMethod(
> [MarshalAs(UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_UI1)]
> ref byte[] array);
> }
>
> /// <summary>ほげほげ</summary>
> [Guid("D3C4768C-E007-4029-9D21-DF5A77C53E29")]
> [ComVisible(true)]
> [ClassInterface(ClassInterfaceType.None)]
> [ProgId("HogeHogeDLL.Hogehoge.1")]
> public class Hogehoge : IHogehoge
> {
> /// <summary>配列の各要素を、それぞれ倍の値にします。</summary>
> /// <param name="array">byteの1次元配列</param>
> public void HogeMethod(ref byte[] array)
> {
> if (array == null)
> {
> array = new byte[0];
> }
> for (int i = 0; i < array.Length; i++)
> {
> unchecked { array[i] *= 2; }
> }
> }
> }
> }