1

我有一个 4D 服务器(我们称之为 4D 服务器 1),它通过 SOAP Web 服务将 BLOB 发送到另一个 4D 服务器(4D 服务器 2)。BLOB 由数组组成,解析后保存到相应的表中。

有时(很少)BLOB 无法解析,然后我们将日志记录到表中。指示的错误是:

错误 61:无法在已编译的数据库中修改数组的类型。

如何查明 BLOB 中的哪个数组导致错误?
我要采取哪些步骤来解决问题?

4

2 回答 2

0

要提取数组,您正在使用一些 BLOB TO VARIABLE 命令,如:

$vlOffset:=0
BLOB TO VARIABLE($blob;$array1;$vlOffset)
BLOB TO VARIABLE($blob;$array2;$vlOffset)
BLOB TO VARIABLE($blob;$array3;$vlOffset)

$vlOffset 将包含 Blob 内变量的起始位置。blob的内部结构是:RVLB + Type + Var + Type + Var ..

所以你应该尝试检查类型:第一个在位置 4,其他在 $vlOffset 位置:

  • 14 实数数组
  • 15 整数数组
  • 16 Longint数组
  • 17 日期数组
  • 18 文本数组
  • 19 图片阵列
  • 21 字符串数组
  • 22 布尔数组
  • 39 对象数组

cfr http://doc.4d.com/4Dv14/4D/14.4/Type.301-2512277.en.html

于 2016-01-07T08:34:17.180 回答
0

我们将数组和变量作为使用 ObjectTools 创建的 BLOB 发送。有更好的(错误)记录和处理例程。我们从未损坏过数组。

http://www.aparajitaworld.com/objecttools/ ObjectTools 是一个 4th Dimension 插件,它提供了一组允许您创建对象的例程:您可以在其中存储和检索任意数量的不同类型数据的单个实体.

于 2015-09-04T23:13:39.430 回答