使用ado的getchunk取大字段过程中
发现
问题1
getchunk返回的字节数与参数不一样大小问题2
 getchunk循环取过程中,如每次取1024,大字段大小为50000,发生错误
不知是否与特殊字符
调了3天了,不知哪位有类似问题,一起讨论讨论

解决方案 »

  1.   

    问题一不是发生在大字段的结尾处
    而是中间,如每次取1024, 大小为10000,
    大概取到3072的时候,getchunk返回大小900, 再取getchunk编译器将报错
      

  2.   

    http://www.vckbase.com/document/viewdoc.asp?id=252
      

  3.   

    应该也没什么,下面是我回复一个贴子时写的:
    Read方法用来从Stream对象中检索二进制数据。其参数设定将从Stream对象的当前位置开始返回的字节数。如果设定值大于剩余自结束,则只返回剩余数据,而不会产生错误。如果省略这个参数
    会使用默认值adReadAll(读取Stream对象中所剩余的字符)
    ....
    Wirte方法用来将二进制数据添加到流中。参数接受存放要添加到Stream对象的数据的字节类型数组
    完成调用后,Stream当前位置将为紧接着添加到Stream中数据后的第一个子节,如果再调用Write方法之前,未处于Stream的末尾,则将参数中的数据覆盖Stream对象中的数据。
    ...这里说的是Stream对象的Read和Write
    GetChunk也写过,找不到了,不过基本上是一样的
    不知道是否解释的通
      

  4.   

    唉,又要写一次
    GetChunk方法从字段中检索数据,并把该数据返回到变量数据中。它接受一个参数:Length
    该参数为长整形数据,接受希望检索的字符字节数目。
    要确定将从特定字段中将检索的 数据量,可以在调用前察看字段的ActualSize属性。如果请求的数据多于字段中剩余数据,则指返回剩余...
    如果无法确定,则必须按块获取数据,并且检查返回的数据。检验存放由GetChunk方法所返回的数据的变量的大小,并把该值与所请求的数据量进行比较,将有助于确定何时完成检索所有有效字段
    注意ADO2.1出现后,ActualSize返回字节数而不是字符数,而Length指示返回的字符数而不是字节数。
    希望有用