如何将PowerBASIC类型转换为VB6类型?

如何将PowerBASIC类型转换为VB6类型?,vb6,types,Vb6,Types,这些类型来自的演示,并用PowerBASIC编写。我正在尝试将它们转换为VB6(还发现了如何) 我的问题是理解如何获取存储在ASCIIZ PTR、FCGX\u STREAM PTR和DWORD PTR项目中的信息。我已经多年没有使用VB6了,所以请带着健康的怀疑态度接受下面的信息。但如果我今天面对这个问题,我会从这里开始 因为您使用的是VB6,所以我假设这是32位代码 PTR类型似乎是指向由其他对象分配的内存块的指针。要访问该内存,需要取消对指针的引用 所有PTR值都是32位的,因此,当您为此创

这些类型来自的演示,并用PowerBASIC编写。我正在尝试将它们转换为VB6(还发现了如何)


我的问题是理解如何获取存储在
ASCIIZ PTR
FCGX\u STREAM PTR
DWORD PTR
项目中的信息。

我已经多年没有使用VB6了,所以请带着健康的怀疑态度接受下面的信息。但如果我今天面对这个问题,我会从这里开始

因为您使用的是VB6,所以我假设这是32位代码

PTR类型似乎是指向由其他对象分配的内存块的指针。要访问该内存,需要取消对指针的引用

所有PTR值都是32位的,因此,当您为此创建VB6结构时,请放置DWORD或LONG或VB6 32位值的任何内容


要取消对指针的引用,需要调用WindowsAPI函数RtlMoveMemory,如下所述。RtlMoveMemory的所有三个参数都是32位值。

我已经很多年没有使用VB6了,所以请带着健康的怀疑态度接受下面的信息。但如果我今天面对这个问题,我会从这里开始

因为您使用的是VB6,所以我假设这是32位代码

PTR类型似乎是指向由其他对象分配的内存块的指针。要访问该内存,需要取消对指针的引用

所有PTR值都是32位的,因此,当您为此创建VB6结构时,请放置DWORD或LONG或VB6 32位值的任何内容

要取消对指针的引用,需要调用WindowsAPI函数RtlMoveMemory,如下所述。RtlMoveMemory的所有三个参数都是32位值。

  • 看起来不错。我还建议看一下如何编写从VB调用的C DLL。最初与VB5一起发布,但仍与VB6相关。说明了包装的结构等
  • 编辑。还值得一看:VB6大师Karl Peterson如何处理VB6中包含指针的结构
      • 看起来不错。我还建议看一下如何编写从VB调用的C DLL。最初与VB5一起发布,但仍与VB6相关。说明了包装的结构等
      • 编辑。还值得一看:VB6大师Karl Peterson如何处理VB6中包含指针的结构

      您能否发布一个指向PowerBasic示例之一的链接?我找不到。请注意,uber大师Matt Curland的书“Advanced Visual Basic 6”还包括一种从VB6调用CDECL DLL的方法。也许您应该向编写该库的开发人员发送一封电子邮件……您可以发布一个指向PowerBasic示例之一的链接吗?我找不到。请注意,优步大师Matt Curland的书“Advanced Visual Basic 6”还包括一种从VB6调用CDECL DLL的方法。也许您应该向编写库的开发人员发送电子邮件…+1。但是永远不要链接到RtlMoveMemory别名为CopyMemory的任何东西,除非你相信Bruce McKinney:)我可以推荐一个链接吗。Karl Peterson(VB6大师)写了关于在VB6+1中处理结构中的指针的文章。但是永远不要链接到RtlMoveMemory别名为CopyMemory的任何东西,除非你相信Bruce McKinney:)我可以推荐一个链接吗。Karl Peterson(VB6大师)写了关于在VB6中处理结构中的指针的文章
          ' Structures
          TYPE FCGX_STREAM
            pData           AS DWORD            ' Pointer to the first byte of data   
            LenStored       AS DWORD            ' Bytes Total data stored - up to 4.2GB 
            Capacity        AS DWORD            ' Bytes Total available   - up to 4.2GB  
            CurPos          AS DWORD            ' Current Position within the buffer of the next byte to read, as an offset from pData
      
            Reserved        AS STRING*12        ' Opaque Variables
          END TYPE ' 28 bytes  
      
      
          TYPE FCGX_REQUEST 
            Version         AS LONG             ' Dll Version Number * 1000 = %FCGI_VERSION        
            ReqCount        AS LONG             ' Request Counter 
      
            Role            AS LONG             ' FastCGI Role
            ConnFlags       AS LONG             ' Connection flags - zero = application closes connection after responding
      
            ReqMethod       AS LONG             ' Request HTTP Method - Code 1 - 8
            ContLen         AS LONG             ' CONTENT_LENGTH - Length of POST data sent (in the pInStream Data String)   
            pzQuery         AS ASCIIZ PTR       ' Pointer to ASCIIZ (Null Terminated) QUERY_STRING (Values Only) - Always a valid pointer
      
            nParam          AS LONG             ' Number of Request Params in the array                                  
            envp            AS DWORD PTR        ' Pointer to Array of Request Parameters  
      
            pIn             AS FCGX_STREAM PTR  ' Pointer to a String Builder object
            pOut            AS FCGX_STREAM PTR  ' Pointer to a String Builder object
            pErr            AS FCGX_STREAM PTR  ' Pointer to a String Builder object                                          
      
            pzLastErr       AS ASCIIZ PTR       ' Pointer to ASCIIZ String containing Last Error description
      
            Reserved        AS STRING*108       ' Opaque Variables
          END TYPE ' 160 bytes