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

投稿日: 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; }
>             }
>         }
>     }
> }


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

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

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