Hatalar, hatalar, sorular - sayfa 1405

 
Tapochun :
Lütfen söyle bana, spread[] dizisinde OnCalculate() çağrılırken , göstergede hangi spread değerleri aktarılıyor? Mum başına yüksek/düşük/ortalama?
Terminali sunucudan alanlar.
 

.dll yükleme sırası ile ilgili bir soru vardı. beyan edilirse

 #import "Test1.dll" //1
#import "Test2.dll" //2
#import

daha sonra ters sırada yüklenirler, yani. ilk "Test2.dll". Öyle görünüyor - fark nedir? Bunun gerekli olduğu ve bazı durumlarda (.dll belirli bir yükleme sırası gerektirir) bir hatayla bittiği ortaya çıktı: 'Test1.dll' yüklenemiyor.
Soru, yükleme sırasını, kod açısından daha mantıklı olacak şekilde yönlendirmek için değiştirmek - veya bu sıranın gelecekte değişmemesini sağlamaktır (böylece, ters sıra için ayarlanan kodun değişmemesi için). aniden çalışmayı bırakın). Şu anda, kodu ters sırada ayarlamak gerekiyor.

 

Derleme 1191. Derleme hatası: kod oluşturma hatası


Nedeni nerede arayacağımı bile bilmiyorum. Ve yapı 1162'de - her şey yolunda.

 
A100 :

Derleme 1191. Derleme hatası: kod oluşturma hatası


Nedeni nerede arayacağımı bile bilmiyorum. Ve yapı 1162'de - her şey yolunda.

Lütfen kodu servis masasına gönderin.
 
Alexander :
Lütfen kodu servis masasına gönderin.

Oldukça dağıtıldı - her şeyi tek bir dosyada toplamaya çalışacağım.

Başka bir kod - zamana dikkat edin - muhtemelen 20 kat büyümüştür

 
Ilyas :

Şimdiye kadar bilinen iki vaka:
1) bool &= (bool ifadesi) işleminde
2) Dizileri başlatmada fazladan virgül: val={ {...},{...} , }

İşte ilk durum - Kodda bu tür birçok işlemim var. Daha önce, yapı 1159 olduğunda hiçbir sorun yoktu. Düzeltmeleri ne zaman bekleyebiliriz?

 

kod oluşturma hatası

Hizmet masasına gönderilen proje kaynakları: #1332553

 
Alexander :
Lütfen kodu servis masasına gönderin.

kod oluşturma hatası



//build 1191
class A {};
class B : public A {};
void f( A& a ) {}
B *h() { return new B; }
void OnStart ()
{
        f( h() );
}

Lütfen dikkatli olun, sonunda cebimde anlattığım gibi olmaz. Aşağıdaki örnekte şimdi ve daha önce nasıl çalıştığını * olmadan yapmak mümkünse

 //build 1191
class A {};
void f( A& a ) {}
A *h() { return new A; }
void OnStart ()
{
        f(  h() ); //нормально
        f( *h() ); //нормально
}
o zaman lütfen yapın, değilse, o zaman yeniliği kullanmaya başlamadan önce her şeyi geri almak mantıklı olabilir

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

Hatalar, hatalar, sorular

A100 , 2015.08.26 10:35

Aslında basit ve anlaşılır bir gösterim sunuyorsunuz.

a = (b + c) - d*e + f;
ile ikame edilmiş
*a = (*b + *c) - *d**e + *f;
Ve bu ne için? kaydedebilmeniz için
bool c = *a == *b;

eşitlik için işaretçileri ve diğer tüm aritmetik işlemleri (toplama, çıkarma, çarpma vb.) İşaretçilerle karşılaştırmak için özel bir işlevin kullanılabilmesine rağmen, kendi başlarına bir anlam ifade etmez, ancak yalnızca bakış açısından ilginçtir. onların aşırı yüklenme olasılığı.

Yalnızca matematiksel bir temel ve türetilmiş sınıf oluşturarak, birkaç (yalnızca bir veya iki değil) aritmetik işlemi yeniden tanımlayarak, bunları sanal hale getirerek ve ardından bunlara dayalı olarak karmaşık ifadeleri (yalnızca a = b + c değil) test ederek - yalnızca bu sizi daha da yakınlaştıracaktır. artık her şeyin OPTİMUM ŞEKİLDE yapıldığını anlamak için. Bu arada, başlangıç seviyesinde konuşuyorsunuz.

Eşitlik göstergelerinin karşılaştırmasını ayrı bir işleve alırsak, yalnızca bir (!) Darboğaz olacaktır.

 class A {};

A *a = b; //однозначно присвоение указателю значения
a = b;     //неоднозначно
bununla birlikte, operatör=() çağrısı yerine atama olarak da ele alınmalıdır, çünkü şu anda bir işaretçiye değer atamak için başka bir sözdizimi yoktur, a.operator=( b ) ayrıca açıkça çağrılabilir
 
A100 :


Başka bir kod - zamana dikkat edin - muhtemelen 20 kat büyümüştür

Bu, MQL5 için yeni bir optimize edici derleyicidir (MQL4'te yoktur), işte böyle çalışır.

Daha iyi hedef kod için daha uzun derleme ile ödeme yapmanız gerekir. Yüzlerce satırdan oluşan bazı uzun fonksiyonları çok zor optimize ediyor.

 
Renat Fatkhullin :

Bu, MQL5 için yeni bir optimize edici derleyicidir (MQL4'te yoktur), işte böyle çalışır.

Daha iyi hedef kod için daha uzun derleme ile ödeme yapmanız gerekir. Yüzlerce satırdan oluşan bazı uzun fonksiyonları çok zor optimize ediyor.

Hatta gerekli mi? Bu "kalite kodu" için fiyat çok yüksek değil mi? Nispeten küçük bir performans artışı uğruna derleme hızını düzinelerce kez yavaşlatın... Üstelik, çoğu durumda bu artış özellikle önemli değil. Ancak derlemeyi uzatmak programcı için işkence haline gelir.

Derleme seçeneklerini "Debug" ve "Release" yapmak daha iyi olabilir mi?