Thread View: fj.lang.visualbasic
7 messages
7 total messages
Started by Chikara Kakinuma
Thu, 15 Jan 1998 00:00
VB固定長STRING型のC関数への引き渡し
Author: Chikara Kakinuma
Date: Thu, 15 Jan 1998 00:00
Date: Thu, 15 Jan 1998 00:00
55 lines
2746 bytes
2746 bytes
こんにちは、柿沼DTIと申します。
#fj.lang.visualbasic,fj.os.ms-windows.programmingの
#クロスポストです。
とっても初歩的な質問で大変恐縮なのですが、どなたかご教示
願います。
現在、Win95 + VB5 + VC++5 で、Windowsアプリケーションを
作成しています。 VCは、VBから呼び出す関数を作成してDLLと
して利用しています。
さて、本題ですが、VB側で、固定長 String 型の変数を定義して
その値を VC側の関数へ引数として渡すと、文字列が NULL止され
なくて困っています。
詳細は、以下の通りです。
[VB側]
Declare Sub VcFunc Lib "test.dll" ( s As String )
Dim str As String * 5
str = "ABC"
VcFunc(str)
[VC側]
void __stdcall VcFunc( char *str )
{
printf( "[%s]\n",str ); <-- 実際はテキストファイル出力
}
--
上記のプログラムを動かすと、VcFunc()が出力した結果は、
[ABC ] とスペースが入ってしまいます。
この右側のスペースをなくしたいと思うのですがどうもうまくいき
ません。VB側から渡す文字列の最後に、NULL文字を設定すれば
うまくいくと思うのですがどうにもうまくNULL文字を設定でき
ません。
#VC側でスペースカットすればよいのですが、諸処の事情があり
#VB側でNULL止したいのです。
#また、可変 String型でやれば、問題ないのですが、これも事情が
#あり、VB側は、固定長でなければなりません^^);;
今までだめもとでやったことは、
1. VB側で、 str = RTrim("ABC") ← 意味無し^^);;
2. VB側で、 str = "ABC"+Str(vbNull) ← 取りあえず適当に^^);
VBのオンラインヘルプと数時間格闘しましたがうまくいきません。
どなたかご教示願います。
--
東電ソフトウェア株式会社 システム技術部 DBDC技術GRP
柿沼 力 (Chikara Kakinuma)
E-mail : OFFICE / kakinuma@tsi.co.jp
PRIVATE/ kakinuma@mars.dti.ne.jp
kakinuma@cba.att.ne.jp
Re: VB固定長STRING型のC関数への引き渡し
Author: AKIYA Saburou
Date: Thu, 15 Jan 1998 00:00
Date: Thu, 15 Jan 1998 00:00
21 lines
1357 bytes
1357 bytes
穐谷(あきや)です。
Chikara Kakinuma <kakinuma@mars.dti.ne.jp> wrote in article
<69is3m$khp$1@news2.dti.ne.jp>...
> #VC側でスペースカットすればよいのですが、諸処の事情があり
> #VB側でNULL止したいのです。
> #また、可変 String型でやれば、問題ないのですが、これも事情が
> #あり、VB側は、固定長でなければなりません^^);;
>
> 今までだめもとでやったことは、
> 1. VB側で、 str = RTrim("ABC") ← 意味無し^^);;
> 2. VB側で、 str = "ABC"+Str(vbNull) ← 取りあえず適当に^^);
str = "ABC" + vbNullChar or
str = "ABC" + Chr$(0)
でいいのでは。
--------------------------------------------------
差出人: 穐谷 三郎
E-Mail: akiya@cmpk.or.jp
Re: VB固定長STRING型のC関数への引き渡し
Author: Chikara Kakinuma
Date: Thu, 15 Jan 1998 00:00
Date: Thu, 15 Jan 1998 00:00
34 lines
2020 bytes
2020 bytes
こんにちは、柿沼@DTIです。
自己フォローです。
Chikara Kakinuma wrote in message <69is3m$khp$1@news2.dti.ne.jp>...
>こんにちは、柿沼DTIと申します。
>#fj.lang.visualbasic,fj.os.ms-windows.programmingの
>#クロスポストです。
>
>さて、本題ですが、VB側で、固定長 String 型の変数を定義して
>その値を VC側の関数へ引数として渡すと、文字列が NULL止され
>なくて困っています。
皆様の温かいフォローで解決することができました。
VB側の固定文字列を NULL 止するには、
Dim str As String * 5
str = "ABC" & vbNullChr
でできました。
こんな初歩的な質問に大変多くの方にフォローを頂き本当に
ありがとうございます。
#それにしても、VBのオンラインヘルプで、「NULL」キーワードで
#検索しても、上記のような説明はなかった...^^);;
#もうしこし、ヘルプを何とかして欲しいこのごろです。> MS
でわ、皆様、ありがとうございました。
--
東電ソフトウェア株式会社 システム技術部 DBDC技術GRP
柿沼 力 (Chikara Kakinuma)
E-mail : OFFICE / kakinuma@tsi.co.jp
PRIVATE/ kakinuma@mars.dti.ne.jp
kakinuma@cba.att.ne.jp
Re: VB固定長STRING型のC関
Author: Terushi Arakawa
Date: Thu, 15 Jan 1998 00:00
Date: Thu, 15 Jan 1998 00:00
14 lines
1047 bytes
1047 bytes
$B9S@n(B@TSN BBS$B$G$9!#(B
> $B:#$^$G$@$a$b$H$G$d$C$?$3$H$O!"(B
> 1. VB$BB&$G!"(B str = RTrim("ABC") $B"+(B $B0UL#L5$7(B^^);;
> 2. VB$BB&$G!"(B str = "ABC"+Str(vbNull) $B"+(B $B<h$j$"$($:E,Ev$K(B^^);
str = "ABC" & vbNull
str = "ABC" & Chr(0)
$B;n$7$F$$$J$$$N$G$J$s$G$9$,!"$3$l$G$&$^$/9T$-$^$;$s$+(B?
--
Terushi Arakawa
mailto:bosturbo@bostn.tsn.or.jp
Re: VB固定長STRING型のC関
Author: Terushi Arakawa
Date: Fri, 16 Jan 1998 00:00
Date: Fri, 16 Jan 1998 00:00
18 lines
1102 bytes
1102 bytes
$B9S@n(B@TSN BBS$B$G$9!#(B
Terushi Arakawa (bosturbo@anise.bostn.tsn.or.jp) wrote:
> > $B:#$^$G$@$a$b$H$G$d$C$?$3$H$O!"(B
> > 1. VB$BB&$G!"(B str = RTrim("ABC") $B"+(B $B0UL#L5$7(B^^);;
> > 2. VB$BB&$G!"(B str = "ABC"+Str(vbNull) $B"+(B $B<h$j$"$($:E,Ev$K(B^^);
> str = "ABC" & vbNull
vbNull$B$O(B1$B$G$7$?$M(B(^^;
> str = "ABC" & Chr(0)
$B$3$C$A$J$iBg>fIW$@$H;W$$$^$9!#(B
--
Terushi Arakawa
mailto:bosturbo@bostn.tsn.or.jp
Re: VB固定長STRING型のC関数への引き渡し
Author: Masaru Kumakawa
Date: Fri, 16 Jan 1998 00:00
Date: Fri, 16 Jan 1998 00:00
57 lines
2731 bytes
2731 bytes
Chikara Kakinuma wrote:
>
> こんにちは、柿沼DTIと申します。
> #fj.lang.visualbasic,fj.os.ms-windows.programmingの
> #クロスポストです。
>
> とっても初歩的な質問で大変恐縮なのですが、どなたかご教示
> 願います。
>
> 現在、Win95 + VB5 + VC++5 で、Windowsアプリケーションを
> 作成しています。 VCは、VBから呼び出す関数を作成してDLLと
> して利用しています。
>
> さて、本題ですが、VB側で、固定長 String 型の変数を定義して
> その値を VC側の関数へ引数として渡すと、文字列が NULL止され
> なくて困っています。
> 詳細は、以下の通りです。
>
> [VB側]
> Declare Sub VcFunc Lib "test.dll" ( s As String )
>
> Dim str As String * 5
> str = "ABC"
> VcFunc(str)
>
> [VC側]
> void __stdcall VcFunc( char *str )
> {
> printf( "[%s]\n",str ); <-- 実際はテキストファイル出力
> }
> --
> 上記のプログラムを動かすと、VcFunc()が出力した結果は、
> [ABC ] とスペースが入ってしまいます。
> この右側のスペースをなくしたいと思うのですがどうもうまくいき
> ません。VB側から渡す文字列の最後に、NULL文字を設定すれば
> うまくいくと思うのですがどうにもうまくNULL文字を設定でき
> ません。
> #VC側でスペースカットすればよいのですが、諸処の事情があり
> #VB側でNULL止したいのです。
> #また、可変 String型でやれば、問題ないのですが、これも事情が
> #あり、VB側は、固定長でなければなりません^^);;
>
> 今までだめもとでやったことは、
> 1. VB側で、 str = RTrim("ABC") ← 意味無し^^);;
> 2. VB側で、 str = "ABC"+Str(vbNull) ← 取りあえず適当に^^);
>
> VBのオンラインヘルプと数時間格闘しまオたがうまくいきません。
>
> どなたかご教示願います。
>
熊川と申します。
str = RTrim("ABC") & Chr$(0)
でも駄目でしょうか?
Re: VB固定長STRING型のC関数への引き渡し
Author: Sirai Kazuki
Date: Fri, 16 Jan 1998 00:00
Date: Fri, 16 Jan 1998 00:00
14 lines
1129 bytes
1129 bytes
城井一輝です。 Chikara Kakinuma さんの <69is3m$khp$1@news2.dti.ne.jp> に関してですが・・・ >VBのオンラインヘルプと数時間格闘しましたがうまくいきません。 うーんと。 VB5DLL.Txt は読みました? =============== Sirai@mcn.ne.jp ===============
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads