我在调用一个API的时候该 函数 返回的类型为 char *  用VB 的string 一运行就挂了.
改用long 接收返回的 字符串地址指针 ,但是以后怎么在vb中使用这个指针呢 比方用msgbox 显示
而且有的人说 在VB 中 调用 系统API 的时候只要参数正确 都可以用long 这个类型接收
接收数据的地址~! 说在VB 下没标准可言 只要声明正确用long就可以~!
请问个位高手是这样的吗~!
小菜谢谢了

解决方案 »

  1.   

    先付初值
    str = String(255, " ")
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/
      

  2.   

    1、这个API是否是标准的?标准的一般是在参数中返回。
    2、先定义一个缓冲区:dim str as string*255,然后取得返回值:str=API的返回值,再提取有用的可见字符:debug.print left(str,instr(str,chr(0))-1)
     
      

  3.   

    楼上说的有时候都没等调试呢就挂了,在调用着个API的时候就挂了 而且有些API 对于Char * 这样的声明在 VB 下有时候用的是string 有时候用的是long 有没有什么标准呢~! 
      

  4.   

    究竟是那个函数?VB自带的API浏览器里没有吗?有时某些参数还会转换为Any类型的。
      

  5.   

    用LONG接受,接受過來的是字符串指針,要在VB里使用,要先使用內存復制(不用字符復制源自方便)把指針所指向的數據復制到你聲明的一個VB字符串變量里,然后就可以輕松使用了
      

  6.   


    Unicode的用long, Ansi的用string
      

  7.   

    在VB6中,所有字符串按UNICODE保存,但所有的API调用却仍使用ANSI字符串。VB6 的String传给API时会自动被转化为ANSI string,从API返回后又被自动转换为unicode String,所以用 VB6/VBA/VBS 用ANSI版的API实现起来比较简单。如果有些API只有Unicode版本,那就要把string类型的参数/返回值转化为指针(以long声明)传递。