오류, 버그, 질문 - 페이지 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 ? 거짓

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 대신 어디에나 쓰기

(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은 아무 것도 추가하지 않는 것으로 나타났습니다. 미묘한 차이!