VBとdll(VC)との間で文字列のやりとりを行いたいのですが、文字列のサイズが大きいため(1Mバイトくらい)
↓のようなことをやりたいと考えています。
VBでメモリを確保し、dll(VC6)で確保したメモリに文字列を入れる。
VBで画面に表示し、メモリを開放する。
------------------
※VB(VB6)
'メモリ確保
AAA = GlobalAlloc( GMEM_MOVEABLE, 10000 );
'dll呼び出し
VCdll( ByRef AAA )
'画面表示
txt1.text = AAA
'メモリ開放
GlobalFree( AAA )
※dll(VC6)
VCdll( char *AAA ) {
sprintf( AAA,"文字列" );
}
------------------
又はdll(VC)でメモリ確保し、VBで表示した後に開放することなどはできないでしょうか。
質問内容がわかりにくいかもしれませんが、どうぞよろしくお願いします。
[VB6.0]で Alloc 系の関数は無いと思います。
変数を宣言した時点でメモリ領域を割り当ててるはずです。
単純に
Dim AAA As String
'//////////////////////////
'// VC側の処理
'//////////////////////////
AAA = ""
でいいのではないでしょうか?。あとはタスクマネージャなどで
メモリの使用量の確認をしつつ、もう少し具体的なメモリの無駄使いが
確認できてから考えるので良いと思います。
配列のスコープを狭くしておけばそこを出た時点で、メモリーが
足りなくなればOSによって適当に捨てられますよ。
たとえばSubの中で宣言するとか。
>文字列のサイズが大きいため(1Mバイトくらい)
って大きいのかな?
この位が心配になるならメモリーの増設を。
ツイート | ![]() |