请教:我写的程序,在调试环境下运行没问题,生成EXE后运行出错:错误5   无效的过程调用或参数我检查了程序,发现问题在于propertybag.contents=B这条语句,B是BYTE数组,注释掉后运行EXE正常。
程序中还有其他地方用到propertybag,不会出错,但是对propertybag.contents进行赋值就会出错,
propertybag.contents不允许赋值吗?那调试环境下为何可以运行呢?谁来指点我啊????????

解决方案 »

  1.   


    Picture10先载入一个图片
    PBag10.WriteProperty "Picture", Picture10.Picture
    Bmpbuffer10 = PBag10.Contents
    '''''
    ''''''
    CopyMemory Bmpbuffer10(0), B(0), Baglen           'B是从串口读入的图片数据
    PBag10.Contents = Bmpbuffer10
    Set Picture10.Picture = PBag10.ReadProperty("Picture")
      

  2.   

    你在调试状态下是用ctrl+F5来运行的么?
      

  3.   


    为了将数据保存到PropertyBag对象,可以先建立一个对象新的实例。使用WriteProperty方法来保存数据,这一方法包含有三个参数:识别属性的字符串,属性的数值,一个缺省数值。如果属性的数值与缺省数值相同时,属性的数值将不会被保存。其范例如下: Dim objPB As PropertyBag 
    Dim strValueToPersist As String strValueToPersist = "TestingPersist" 
    Set objPB = New PropertyBag Call objPB.WriteProperty("PersistValue", strValueToPersist, _ 
    vbNullstring)    为了能够实现从PropertyBag读取数据,可以使用ReadProperty方法。这一方法的参数包含有一个属性名称和一个缺省的数值,返回值是属性的数值: strValueToPersist = objPB.ReadProperty("PersistValue", vbNullString)    为了保存PropertyBag对象的内容,可以将内容属性保存到一个二进制字节的数组或一个变量。 Dim vntContents As Variant 
    vntContents = objPB.Contents 
       注释:Save to desired location    为了能够从PropertyBag对象中重新获取信息,将保存数值读入一个二进制的数组。然后将内容属性设置为二进制数组,这样所有的属性数值将可以重新获得。 Dim b() As Byte 
    Dim vntContents As Variant    注释:Read saved contents into vntContents from saved location Set objPB = New PropertyBag 
    b = vntContents 
    objPB.Contents = b   
    http://gpwiki.org/index.php/VB:Property_Bag_Resource_File
      

  4.   

    我又试了一下,ctrl+F5,依然可以正常运行