错误、漏洞、问题 - 页 1970

 
pavlick_:

在我的脚本中得到了一个错误,试图对它进行本地化,所以它暂时被绕过了。

我想我找到了。

if(sizeof(color) <= sizeof(ulong))
   {
      
      if( ObjectCreate(0, "any_object", OBJ_TREND, 0, 0, 0)  &&
          ObjectSetInteger(0, "any_object", OBJPROP_COLOR, clrNONE) )
      {
         ulong clr;
         if( ObjectGetInteger(0, "any_object", OBJPROP_COLOR, 0, clr) )
         {
            Alert("clr == clrNONE ?  ", clr == (ulong)clrNONE);
            Alert("clrNONE value = ", (ulong)clrNONE);
            Alert("value that was returned = ", clr);
         }
         
      }
   }

警报。

clr == clrNONE ? false

clrNONE值=4294967295

返回的值 = 18446744073709551615

也就是说,我们为对象设置颜色clrNONE,然后我们读取对象的颜色 并与clrNONE进行比较--它们没有收敛。
 
pavlick_:

即:将对象的颜色设置为clrNONE,然后读取对象的颜色

读取另一个物体的颜色
 

是的,谢谢你。我修复了那里的名字,但错误仍然存在。

 
pavlick_:

设置对象的颜色为clrNONE,然后读取对象的颜色,与clrNONE进行比较 - 它们不匹配。

Alert("clr == clrNONE ?  ", (color)clr == clrNONE); // true

clrNONE -4个 字节的所有位都填上1。

ulong clr -8个 字节的所有位都填上1。

 
pavlick_:

是的,谢谢你。我修复了那里的名字,但错误仍然存在。

事实上,在ObjectGetInteger 中,代替了

void ObjectGetInteger( long& x ) { x = clrNONE; }

.

void ObjectGetInteger( long& x ) { x = -1; }

解决办法:然后到处写x而不是x。

(color)x
 
fxsaber:

clrNONE -4个 字节的所有位都是1。

ulong clr -8个 字节的所有位都填上1。

我认为这里有某种错误。

1. clrNONE是一个4字节的正数,因为Alert( long(clrNONE) ) == 4294967295 (如果它是负数(颜色符号),它将进入减号。)

2.我们在SetInteger中把它转换为long,但数值不能改变。

3.为什么我在SetInteger中得到了一个非主要的数字?

要么是终端里面的颜色被转换为有符号的类型,例如int,然后在转换为沿时增长,要么就是其他的东西。

 
再次,非常感谢你们所有人。我几乎可以肯定,里面的颜色是浇铸出来的,有反向浇铸和误差。好吧,就看开发者如何写一个有效的ObjectGetInteger(),它只需要几个字符: ObjectGetInteger() { return long((uint)internal_clr); }
 
这到底是不是一个错误(不同的数组)?
void OnStart()
{
  short Data[] = {1};
  short Data2[];
  
  StringToShortArray(ShortArrayToString(Data), Data2);
//  StringToShortArray(ShortArrayToString(Data), Data2, 0, ArraySize(Data)); // так массивы совпадут
  
  ArrayPrint(Data);  // 1
  ArrayPrint(Data2); // 1 0
}
 
fxsaber:
这到底是不是一个错误(不同的数组)?
没有,只是最后加了一个0。
 
Комбинатор:
不,它只是添加了一个终止的0。

在上面添加了一行--指定复制行的长度。它开始匹配。也就是说,事实证明,输入参数count = -1在结尾处增加了0,而count = StringLen则没有增加。Nyuansyk!