Hatalar, hatalar, sorular - sayfa 1970

 
pavlick_ :

Senaryoda bir hata aldım, şimdiye kadar yerelleştirmeye çalışıyorum.

Görünüşe göre buldum:

 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);
         }
         
      }
   }

uyarmak:

clr == clrYOK ? yanlış

clrNONE değeri = 4294967295

döndürülen değer = 18446744073709551615

Onlar. nesnenin rengini clrNONE olarak ayarlayın, ardından nesnenin rengini okuyun, sonucu clrNONE ile karşılaştırın - yakınsamazlar.
 
pavlick_ :

Onlar. nesnenin rengini clrNONE olarak ayarlayın, ardından nesnenin rengini okuyun

başka bir nesnenin rengini oku
 

Evet teşekkür ederim. Oradaki isimleri düzelttim ama hata devam etti.

 
pavlick_ :

nesnenin rengini clrNONE olarak ayarlayın, ardından nesnenin rengini okuyun, sonucu clrNONE ile karşılaştırın - yakınsamazlar.

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

clrNONE - 4 baytlık tüm bitler birlerle doldurulur.

ulong clr - 8 baytlık tüm bitler birlerle doldurulur.

 
pavlick_ :

Evet teşekkür ederim. Oradaki isimleri düzelttim ama hata devam etti.

Aslında ObjectGetInteger yerine

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

devam ediyor

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

çıktı: x yerine her yere yaz

(color)x
 
fxsaber :

clrNONE - 4 baytlık tüm bitler birlerle doldurulur.

ulong clr - 8 baytlık tüm bitler birlerle doldurulur.

Bir yanlışlık var bence.

1. clrNONE - pozitif 4 baytlık sayı Alert ( long(clrNONE) ) == 4294967295 (negatif olsaydı (işaretli renk), eksiye giderdi)

2. SetInteger'da uzuna taşındı, değer değişemedi

3. SetInteger'da neden ilk olmayan bir sayı alıyorum?

Ya terminal renginin içinde işaretli bir türe damıtılır, örneğin int ve daha sonra birlikte veya başka bir şeye çevrildiğinde büyür.

 
Herkese tekrar teşekkürler. Neredeyse eminim ki, rengin içinde, ters döküm ve bir hata ile imzalanmış olarak yazılmıştır. Pekala, geliştiricinin kaygısı, geçerli bir ObjectGetInteger() , ardından birkaç karakter için yazmaktır: ObjectGetInteger() { return long((uint)internal_clr); }
 
Bu bir hata mı (farklı diziler) yoksa değil mi?
 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 :
Bu bir hata mı (farklı diziler) yoksa değil mi?
hayır, sadece sondaki 0 eklendi.
 
Комбинатор :
hayır, sadece sondaki 0 eklendi.

Çizginin uzunluğunu kopyalamak için yukarıda belirtilen bir çizgi eklendi. Maç başladı. Onlar. sayım = -1 girdi parametresinin sona sıfır eklediği ve sayım = StringLen'in hiçbir şey eklemediği ortaya çıktı. nüans!