VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2006/12/21(Thu) 19:15
投稿者魔界の仮面弁士
Eメール
URL
タイトルRe: VB6.0でのバイナリデータの渡し方について

> 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; }
            }
        }
    }
}


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -