VB与VC中API中字符串类型的转换有关问题
VB与VC中API中字符串类型的转换问题
VC 中,关于字符串,我看是这样的表示方法
char *sDVRFileName 和 BYTE sSerialNumber[SERIALNO_LEN]
这个我搞不太清,理论上面一个是字符串,一个是数组,可是vc好象是直接传递的vb就不行了呀
举个例子
VC是这样的
NET_DVR_API BOOL __stdcall NET_DVR_GetPicture(LONG lUserID,char *sDVRFileName,char *sSavedFileName);
BYTE sSerialNumber[SERIALNO_LEN]; //序列号
char filenamedownload[256];
char nFileName[256];
NET_DVR_GetPicture(GetPic-> m_lServerID, GetPic-> filenamedownload, nFileName) //调用
vb中 nFileName是一个字符串,怎样调用 NET_DVR_GetPicture呢
------解决方案--------------------
VB 是完全 COM 兼容的,所以它的 String 就是 BStr,具体可以看看 MSDN。
c 中的 char* 是一个指针,而且字符串值 ANSI 格式。
首先,在 VB 中将参数声明未指针值(Long)
declare ... NET_DVR_GetPicture(byval lUserID as long,byval sDVRFileName as long, byval sSavedFileName as long)
其次,将VB字符串转换为 ANSI 格式并传递指针
sFileName = strconv(sFileName, vbFromUnicode)
NET_DVR_GetPicture lUserID, strptr(sFileName), strptr(sSaveFileName)
------解决方案--------------------
sFileName = StrConv(strFileInfo.sFileName, vbUnicode)
------解决方案--------------------
sFileName(0 To 100) As Byte '//图片名
sFileName As String*101
------解决方案--------------------
调用的时候要先初始化这个String
***.sFileName =space(101)
VC 中,关于字符串,我看是这样的表示方法
char *sDVRFileName 和 BYTE sSerialNumber[SERIALNO_LEN]
这个我搞不太清,理论上面一个是字符串,一个是数组,可是vc好象是直接传递的vb就不行了呀
举个例子
VC是这样的
NET_DVR_API BOOL __stdcall NET_DVR_GetPicture(LONG lUserID,char *sDVRFileName,char *sSavedFileName);
BYTE sSerialNumber[SERIALNO_LEN]; //序列号
char filenamedownload[256];
char nFileName[256];
NET_DVR_GetPicture(GetPic-> m_lServerID, GetPic-> filenamedownload, nFileName) //调用
vb中 nFileName是一个字符串,怎样调用 NET_DVR_GetPicture呢
------解决方案--------------------
VB 是完全 COM 兼容的,所以它的 String 就是 BStr,具体可以看看 MSDN。
c 中的 char* 是一个指针,而且字符串值 ANSI 格式。
首先,在 VB 中将参数声明未指针值(Long)
declare ... NET_DVR_GetPicture(byval lUserID as long,byval sDVRFileName as long, byval sSavedFileName as long)
其次,将VB字符串转换为 ANSI 格式并传递指针
sFileName = strconv(sFileName, vbFromUnicode)
NET_DVR_GetPicture lUserID, strptr(sFileName), strptr(sSaveFileName)
------解决方案--------------------
sFileName = StrConv(strFileInfo.sFileName, vbUnicode)
------解决方案--------------------
sFileName(0 To 100) As Byte '//图片名
sFileName As String*101
------解决方案--------------------
调用的时候要先初始化这个String
***.sFileName =space(101)