JRA公式競馬データ配信サービス JRA-VAN Data Lab.

JRA-VAN DataLab.

競馬ソフト開発コーナー

JV-Dataの使い方あれこれ

一括表示 リストに戻る
タイトルC#でのJVGetsの使用方法を教えていただけないでしょうか。
記事No2384
投稿日: 2011/03/04(Fri) 20:43
投稿者HOPE
「プログラミング質問広場」で質問しましたが、解決しなかったこと、JV-Data
のことなので本来こちらの掲示板の方で質問する内容と考えられることから、再
投稿いたします。

JVGetは第一引数のバイト配列に読み込んだデータを渡すようになっていますが
、C#の場合は書式は次のようになっており、オブジェクトの参照渡しをするよ

になっています。
public virtual int JVGets(ref object buff, int size, out string filena
me);

これに基づき次のようにobjectを渡し、そのobjectを型変換しましたが、上手
くデータを読むことができません。stringにキャストしても同じでした。
byte[] buffer = new byte[1100000];としてこれをobjectとしても駄目でした


object strB=null ;

lReturnCode = this.axJVLink1.JVGets(ref strB, lBuffSize, out strFileNam
e);

string strBuff = strB.ToString();

strBuffに読み込んだ内容を入れたいのですが入っておりません。
どのようにしたらJVGetsを使うことができるのでしょうか。

タイトルRe: C#でのJVGetsの使用方法を教えていただけないでしょうか。
記事No2385
投稿日: 2011/03/07(Mon) 16:10
投稿者JRA-VANソフトサポート
JRA-VANソフトサポートの竹下です。
DataLab.サービスをご利用頂きまして誠にありがとうございます。

はじめに、記載いただいた質問はJV-Linkの利用方法に関する質問と
なりますので、「JV-Link質問箱」もしくは「プログラミング
質問広場」にて投稿いただけますようお願い申し上げます。

さて、ご質問いただいた内容についてですが、

>byte[] buffer = new byte[1100000];

JVGetsは内部でReturnする際にByte SafeArrayをセットして返します。
上記のようにオブジェクト"strB"にバイト型配列"buffer"をセット
し、"lBuffSize"にも宣言したバイト配列の大きさと同じ値を設定し
てください。

以下にコード例を挙げます。

// JVGetsに渡す変数の初期化
object strB = null;
int lBuffSize = 1100000;
string strFileName;

// オブジェクトにバイト型配列を設定
byte[] buffer = new byte[1100000];
strB = buffer;

// JVGets読込後変換用変数
byte[] retByteData;
string retStrData;

// JVGets呼び出し
lReturnCode = this.axJVLink1.JVGets(ref strB, lBuffSize, out strFileName);

// JVGets正常読込
if (lReturnCode > 0)
{
// JVGetsでセットされたobject "strB"をバイト配列に変換
retByteData = (byte[])strB;
// 文字コードを指定して文字列に変換(SJIS)
retStrData = System.Text.Encoding.GetEncoding(932).GetString(retByteData);
}

JVGetsにてセットされたobject "strB"をアプリケーション側で
バイト型配列にキャストします。
そのキャストしたバイト型配列にstring(SJIS)変換処理を
行うことでretStrDataに値がセットされていることが
ご確認いただけます。

あくまで一例ですので参考情報としてお考えください。


以上、よろしくお願い致します。

タイトルRe^2: C#でのJVGetsの使用方法を教えていただけないでしょうか。
記事No2386
投稿日: 2011/03/08(Tue) 20:24
投稿者HOPE
上手く行きました。
ありがとうございました。

ウィンドウを閉じる