class A { public :
int m;
A() { Alert ( "A" ); m= 1 ; }
};
class B { public :
B() { Alert ( "B" ); static A a; Alert ( "a.m==" ,a.m); Alert ( "&a==" ,&a);}
};
B b;
voidOnStart ()
{
};
Yürütüldüğünde, aşağıdaki uyarı sırasını alırız:
B am==0 &a==0 A
Onlar. statik bir değişken, erişildiği zaman henüz başlatılmamış. İşaretçi bile boş. Tipi üzerinden atladı ve güvenle ilerledi.
Böyle bir karmaşa olmamalı. Ya değişkeni başlatır ve devam ederiz ya da derlemeyi bir hata ile iptal ederiz.
Burada, elbette, başlatılmalıdır. Ancak, karşılıklı referans veren sınıflardan bir özyinelemenin oluştuğu durumlarda, derleme durdurulmalıdır.
'?????????????????????????t????…' - tanımlayıcı çok uzunmas.dat11
' ' - bilinmeyen sembolmas.dat13015
Komut dosyanız, verilerinizin baytlarını içeren bir dizi uchar türü içeren mas.mqh dosyasını oluşturmalıdır. Örneğin dosyanın boyutu üç bayt ise mas.mqh dosyasının içeriği aşağıdaki gibi olmalıdır:
uchar mass[ 3 ] = { 25 , 127 , 89 };
Oluşturulan kütle dizisi, programınızda kullanmanız gereken şeydir.
Bir dosyayı diskten on binlerce kez okumak zorunda kalmanız pek olası değildir. Disk önbelleği bunun için var. Tabii ki, bu özel durumda kullanılıp kullanılmadığını bilmiyorum, ancak koltuk değneklerini icat etmeden önce kontrol etmeniz, ölçüm yapmanız gerekir.
Çözüm sağladığınız için çok teşekkür ederim. Her şey çalışıyor.
Tüm dizi dosyasını belleğe okumak ve daha sonra onunla çalışmak çok daha hızlıdır - hızlanma çok daha hızlı olacaktır.
Dizili bir dosya bir danışmana nasıl bağlanır?
İlk olarak, komut dosyası diziyi yazar:
Danışmana şu dosyayı ekliyorum:
Derlerken, hatalar:
'?????????????????????????t????…' - tanımlayıcı çok uzun mas.dat 1 1
' ' - bilinmeyen sembol mas.dat 1 3015
Statik değişkenlerle ciddi hatalar. Bu kodu göz önünde bulundurun:
Yürütüldüğünde, aşağıdaki uyarı sırasını alırız:
B
am==0
&a==0
A
Onlar. statik bir değişken, erişildiği zaman henüz başlatılmamış. İşaretçi bile boş. Tipi üzerinden atladı ve güvenle ilerledi.
Böyle bir karmaşa olmamalı. Ya değişkeni başlatır ve devam ederiz ya da derlemeyi bir hata ile iptal ederiz.
Burada, elbette, başlatılmalıdır. Ancak, karşılıklı referans veren sınıflardan bir özyinelemenin oluştuğu durumlarda, derleme durdurulmalıdır.
Dizili bir dosya bir danışmana nasıl bağlanır?
İlk olarak, komut dosyası diziyi yazar:
Danışmana şu dosyayı ekliyorum:
Derlerken, hatalar:
'?????????????????????????t????…' - tanımlayıcı çok uzun mas.dat 1 1
' ' - bilinmeyen sembol mas.dat 1 3015
Komut dosyanız, verilerinizin baytlarını içeren bir dizi uchar türü içeren mas.mqh dosyasını oluşturmalıdır. Örneğin dosyanın boyutu üç bayt ise mas.mqh dosyasının içeriği aşağıdaki gibi olmalıdır:
Oluşturulan kütle dizisi, programınızda kullanmanız gereken şeydir.
Optimize edicide dosyanın on binlerce kez açılması-okunması-kapatılması gerekeceğini düşünmüyorum.
Geçmiş verilerde hata ayıklama modunda , MQLInfoInteger(MQL_VISUAL_MODE) her zaman true değerini döndürür.