Hatalar, hatalar, sorular - sayfa 1845

 
Nikolai Semko :
Geliştiricilere soru-istek.
Zaman dilimlerini değiştirirken bazı değişkenleri veya dizileri yeniden başlatmamaları için kaydetme yeteneğinde gerçek bir eksiklik vardır. Veya bir şekilde aracılığıyla yapılabilir mi? OnDeinit, REASON_CHARTCHANGE neden kodunu belirtiyor ?
Sadece programın vücudumda, zaman çerçevesine bağlı olmayan oldukça hantal hesaplamalar var, onları her seferinde yeniden hesaplamak istemiyorum. Hislerime göre, zaman çerçevesi değiştirilirken yeniden başlatılmayan özel bir küresel değişken türü eksikliği var. Terminalin global değişkenlerini kullanmadan basit değişkenli teflerle nasıl yapacağımı öğrendim, ancak yapılar veya diziler ile bunun nasıl uygulanacağını hayal bile edemiyorum ve öyle bir olasılık yok gibi görünüyor. Tabii ki kaynaklar aracılığıyla mümkün, ancak bu bir şekilde çok çarpık.
Bir gösterge kullanmayı deneyin. Orada, TF değiştirilirken global değişkenler yeniden başlatılmaz (hatırladığım kadarıyla). Veya bir dosya aracılığıyla.
 
Konstantin :

nasıl?

Örneğin şöyle:

 struct MyArray
{
   double buff[];
   
   MyArray()
   {
   }
   MyArray( int n )
   {
       ArrayResize ( buff, n );
   }
   MyArray( const MyArray& other )
   {
       ArrayCopy ( buff, other.buff );
   }
   ~MyArray()
   {
       ArrayFree ( buff );
   }
   
   void operator =( const MyArray& other )
   {
       ArrayCopy ( buff, other.buff );
   }
   
   void assign( int n, const double val = 0.0 )
   {
       ArrayResize ( buff, n );
       ArrayInitialize ( buff, val );
   }
};

MyArray func()
{
   MyArray myArray;
   
   // Заполняем массив.
   
   return myArray;
}
 
Koldun Zloy :

Örneğin şöyle:

Sorulan şey bu değil, ama belki de bu, kesin bir cevabın olduğu sorunun yazarına uyacaktır - HAYIR.

Service Desk'te ret yok

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

fxsaber , 2017.04.02 10:34

Bir işlev tarafından bir dizi döndürme olasılığını tanıtarak bir diziye işaretçi eksikliğini telafi etmek mümkün müdür?
 int [] Func()
{
   int a[] = { 1 , 2 , 3 };

   return (a);
}

Print (Func()[ 1 ]); // 2 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

fxsaber , 2017.04.01 10:20

[] operatörü bir kez dize türüne eklendi
 string Str = "A B C" ;
Print ( CharToString ( Str[ 1 ] )); // B


Geliştiricilerin diziler için = operatörünü eklemesi mümkün müdür?

 int a[], b[];
a = b ; // ArrayCopy(a, b);


İşaretçiler olmadığından, böyle bir operatör dili daha esnek hale getirecektir - ÇOK uygun olacağı durumlar vardı.

 
Alexey Kozitsyn :
Bir gösterge kullanmayı deneyin. Orada, TF değiştirilirken global değişkenler yeniden başlatılmaz (hatırladığım kadarıyla). Veya bir dosya aracılığıyla.

Her şey tam tersi:

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Global program değişkenlerinin ve diğer faydalı bilgilerin başlatılması.

Artyom Trishkin , 2016.12.05 20:27

SD'den alınan cevap:


Expert Advisors'ın global değişkenlerinin bu özelliğini güvenle kullanabileceğimizi düşünüyorum.


 
Alexey Kozitsyn :
Bir gösterge kullanmayı deneyin. Orada, TF değiştirilirken global değişkenler yeniden başlatılmaz (hatırladığım kadarıyla). Veya bir dosya aracılığıyla.

indikatörü kullanıyorum. Yeniden başlatıldı. Dosya bir seçenek değil, yavaş ve yüksek kaliteli senkronizasyon sağlamak zor. O zaman ResourceCreate aracılığıyla daha iyidir. Ama bütün bunlar çok rahatsız edici. Bazıları her biri birkaç Mb olan onlarca diziye sahipsem, en az iki yazma ve okuma işlevi yazmam, içinde bir işleyici oluşturmam gerekir. OnDeinit. Evet, tüm bunları zaten denedim, bir senkronizasyon sorunuyla karşılaştım, tk. kaynaklar ve dosyalar çoklu kullanım koşullarında kendi ayrı hayatlarını yaşarlar. Belli bir olayda, benim durumumda, zaman diliminde bir değişiklikte, yeniden başlatmama için yeterli olasılık olmadığında neden bir kambur şekillendirelim .
 
Nikolai Semko :

indikatörü kullanıyorum. Yeniden başlatıldı. Dosya bir seçenek değil, yavaş ve yüksek kaliteli senkronizasyon sağlamak zor. O zaman ResourceCreate aracılığıyla daha iyidir. Ama bütün bunlar çok rahatsız edici. Bazıları her biri birkaç Mb olan onlarca diziye sahipsem, en az iki yazma ve okuma işlevi yazmam, içinde bir işleyici oluşturmam gerekir. OnDeinit. Evet, tüm bunları zaten denedim, bir senkronizasyon sorunuyla karşılaştım, tk. kaynaklar ve dosyalar çoklu kullanım koşullarında kendi ayrı hayatlarını yaşarlar. Belli bir olayda, benim durumumda, zaman diliminde bir değişiklikte, yeniden başlatmama için yeterli olasılık olmadığında neden bir kambur şekillendirelim .
Cevap burada .
 
Artyom Trishkin :

Her şey tam tersi:



Teşekkürler, danışmanları bilmiyordum!
Ama, kahretsin, göstergede bu çipe ihtiyacım olursa!

 
Koldun Zloy :

Örneğin şöyle:


örnek için teşekkürler, ancak bir dizi nedeniyle karmaşık türde bir nesne oluşturmak istemem, hepsi gereksiz kod gibi görünüyor))
 
fxsaber :

Sorulan şey bu değil, ama belki de bu, kesin bir cevabın olduğu sorunun yazarına uyacaktır - HAYIR.

Service Desk'te ret yok



diziler için bir işaretçi tanıtmak daha olağan olsa da, bu özelliği tanıtacaklarını umalım.
 
Artyom Trishkin :

Her şey tam tersi:

Ah, kahretsin ... evet, sadece yazınızla yönlendirildim, her şeyi karıştırdım :)