首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在VB6中从指针中获取字符串

如何在VB6中从指针中获取字符串
EN

Stack Overflow用户
提问于 2013-09-02 04:59:18
回答 1查看 1.6K关注 0票数 1

我必须用VB6调用call。

C代码

代码语言:javascript
复制
short int decode(BOOL Mode, char* tete, char* adresse, char* status, char* nombre, char* datadecode);

我的VB代码:

代码语言:javascript
复制
Private Declare Function decode Lib "VBdecode.dll" ( _ 
ByVal Mode As Long, _ 
ByVal tete As String, _ 
ByVal adresse As String, _ 
ByVal status As String, _ 
ByVal nombre As String, _ 
ByVal datadecode As String) As Long
Dim retour_lire As Long
Dim buffer(4) As Byte   
Dim  vbcData as string
Dim i As Integer
Dim chdecode As string

retour_lire = Byte_read(True, "4", "00", buffer, "16", vbcData)

For i = 1 To 10 
chdecode = vbcData(i) 
Next

MsgBox chdecode

但是我的VB6代码不起作用。

请提出任何想法,任何建议或更正。

请帮帮我,我全靠你了。

EN

回答 1

Stack Overflow用户

发布于 2013-09-02 20:06:24

这些评论实际上是错误的。你是正确的。VB6会将Strings (无论如何都是这样发送的)转换为char*。如果您使用的是VarPtr()As Any,那么它们将是正确的。

你的问题是返回值。将C++端的short int更改为int,或将VB6端的As Long更改为As Integer

因此,要么:

代码语言:javascript
复制
int decode(BOOL Mode, char* tete, char* adresse, char* status, char* nombre, char* datadecode);

或者:

代码语言:javascript
复制
Private Declare Function decode Lib "VBdecode.dll" ( _ 
ByVal Mode As Long, _ 
ByVal tete As String, _ 
ByVal adresse As String, _ 
ByVal status As String, _ 
ByVal nombre As String, _ 
ByVal datadecode As String) As Integer

不能同时使用:)!

值得注意的是,您的示例代码实际上从未调用过decode()。另一个问题是,您试图在C++端更改字符串的内容,这只是一个猜测。您可以更改字符串,但不能重新分配它。因此,您需要设置它的大小(使用Space$())。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18562873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档