Hatalar, hatalar, sorular - sayfa 1161

 
joo :

v4.3, özel ürün yazılımı.

Ana pencere - yatay konum, diğer iletişim kutuları (siparişler) - portre. Ana pencereden diyalog pencerelerine kontrolsüz geçiş can sıkıcı.

iyi, vay .... Smart Rotator gibi özel programlar bile yardımcı olmuyor ....

komik, ancak terminal için Smart Rotator'da manzarayı zorlarsanız, tüm pencereler gerçekten peyzajlı hale gelir. ama portre istiyorum! - Ayarlarda terminal için portre modunu ayarladım, ne olmuş? - heh heh... hala bazı pencereler manzara ve bazıları portre.

 

Meta düzenleyicide bir hata.

Diyelim ki bir nesneye işaretçi döndüren bir Obj() fonksiyonumuz var:

class CObject {    public :      int value ; }; CObject object ;

CObject* Obj() { return GetPointer( object ); }

Şimdi, nesneye doğrudan işlev aracılığıyla erişirsek: Obj().value = 10, o zaman noktayı girdikten sonra , sınıfın üye ve yöntemlerinin bir açılır listesi görünmez.

 
meat :

MQL'nin sınıf şablonlarını desteklemediği göz önüne alındığında, CArray sınıfı her derde deva değildir. Dizimiz mutlaka basit tiplerden oluşmaz. Ve bir programdaki her yeni sınıf için eksiksiz bir CArray alt yapısı oluşturmak çok ilginç değil. Bir CArray soyundan gelen her dosyanın kaç satır kod aldığını görün (ArrayInt.mqh, ArrayDouble.mqh, vb.)

Ve programın yapısının nasıl organize edildiği ikincildir. Konudan sapmayalım. Sonuç olarak, değiştirilebilecek bir parametre varsa (bu durumda, bu Reserve_size ), o zaman onu elde etmek mümkün olmalıdır.

Karmaşık türler CObject'den devralır ve güvenle CArrayObj içine paketlenir.

Reserve_size - yalın programlama paradigmasını bozar. Sadece yeni başlayanlar için var ve normal dillerde hiç olmamalı.

 
C-4 :

Reserve_size - yalın programlama paradigmasını bozar. Sadece yeni başlayanlar için var ve normal dillerde hiç olmamalı.

Garip bir paradigmaya sahipsiniz. Rezervasyon, yalnızca kaynakların ekonomik kullanımı içindir, bellek yeniden tahsislerinin ve veri hareketlerinin sayısını azaltır (ve bunlar oldukça maliyetli işlemlerdir). Ve bu parametreyi yönetmesi gereken kod geliştiricidir, çünkü sadece o, programının hafızayı nasıl kullanacağını önceden bilir. Ve bu dille hiç bağlantılı değil, çünkü dizi Afrika'da bir dizidir ve bunun için her yerde bellek gerekir.

 
meat :

Garip bir paradigmaya sahipsiniz. Rezervasyon, yalnızca kaynakların ekonomik kullanımı için tasarlanmıştır, bellek yeniden tahsislerinin ve veri hareketlerinin sayısını azaltır (ve bunlar oldukça pahalı işlemlerdir). Ve bu parametreyi yönetmesi gereken kod geliştiricidir, çünkü sadece o, programının hafızayı nasıl kullanacağını önceden bilir. Ve bu dille hiç bağlantılı değil, çünkü dizi Afrika'da bir dizidir ve bunun için her yerde bellek gerekir.

Burada kendi sorunuzu cevapladınız:

Bu parametreyi yönetmesi gereken kişi kodun geliştiricisidir, çünkü sadece o, programının hafızayı nasıl kullanacağını önceden bilir. Dille alakası yok...

Bu, dil araçlarıyla bağlantılı değildir; bu, daha yüksek bir kullanıcı düzeyinde karar verilmesi gerektiği anlamına gelir. Öyleyse, bu görevler için özel olarak oluşturulmuş, bu arada, bu görevle zekice ve sanki onun için yaratılmış gibi başa çıkan CArray * sınıflarının yardımıyla çözün.

 
meat :

Garip bir paradigmaya sahipsiniz. Rezervasyon sadece kaynakların ekonomik kullanımı için tasarlanmıştır, bellek yeniden tahsislerinin ve veri hareketlerinin sayısını azaltır (ve bunlar oldukça pahalı işlemlerdir)...

 void TestFoo()
{
  CArrayObj listObj;
  listObj.Resize( 100 );
   for ( int i = 0 ; i < 100 ; i++)
     listObj.Add( new CObject());
   int count = CountObj(listObj);
}

void CountObj(CArrayObj* obj)
{
   return obj.Size();
}
Süper ekonomik kod. Hiç bellek yeniden tahsisi yoktur, çünkü elemanların sayısı önceden bilinir. Diziler iletilmez, ancak onlara işaretçiler. Hız inanılmaz derecede hızlıdır ve hiçbir rezerv_boyutu gerekmez. Bu karar neden hoşunuza gitmedi?
 
C-4 :
Süper ekonomik kod. Hiç bellek yeniden tahsisi yoktur, çünkü elemanların sayısı önceden bilinir . Diziler iletilmez, ancak onlara işaretçiler. Hız inanılmaz derecede hızlıdır ve hiçbir rezerv_boyutu gerekmez. Bu karar neden hoşunuza gitmedi?

Eh, her şey bu kadar basit olsaydı... Gerçek koşullarda, kural olarak, öğelerin sayısı önceden bilinmez. Üstelik bu sayı dinamik olarak değişmektedir. Yani basitleştirilmiş "Merhaba dünya" örneğiniz anlamsız. Ve sadece iki satırla değiştirilebilir:

CObject listObj[ 100 ];
int count = ArraySize (listObj);

Genel olarak, neden tüm bu sel? Rezerve_size parametresini şahsen kullanmazsanız, o zaman Tanrı aşkına. Sadece bundan geri kalanların aptal veya yeni başlayanlar olduğu sonucuna varmayın. Belki de bir şey anlamıyorsun. Dizilerle (vektör, dize vb.) çalışmak üzere tasarlanmış standart STL kapsayıcıları da her zaman yedek ve kapasite gibi yöntemlere sahiptir.

 
joo :

iyi, vay .... Smart Rotator gibi özel programlar bile yardımcı olmuyor ....

komik, ancak terminal için Smart Rotator'da manzarayı zorlarsanız, tüm pencereler gerçekten peyzajlı hale gelir. ama portre istiyorum! - Ayarlarda terminal için portre modunu ayarladım, ne olmuş? - heh heh... hala bazı pencereler manzara ve bazıları portre.

Stok belleniminde iyi çalışıyor (en azından beklendiği gibi)
 

Son derlemede, MetaEditor'daki arama normal çalışmayı durdurdu ( sağ üst köşedeki pencere). Oraya istediğim kelimeyi girdiğimde, otomatik olarak, hiçbir yerden ve sebepsiz olarak alınmış benzer bir ifadeyle değiştiriyor. Sonuç olarak, kodunuzda herhangi bir şey bulmak imkansız hale gelir. Örneğin, "ERROR_VALUE" adlı bir değişken bulmaya çalışıyorum ama bunun yerine arama dizesinde "error_value 7" alıyorum.

Soru: anlaşma nedir? Bu sol çöp arama çubuğunda nereden geliyor ve nasıl kaldırılır?

 
meat :

Son derlemede, MetaEditor'daki arama normal çalışmayı durdurdu ( sağ üst köşedeki pencere). Oraya istediğim kelimeyi girdiğimde, otomatik olarak, hiçbir yerden ve sebepsiz olarak alınmış benzer bir ifadeyle değiştiriyor. Sonuç olarak, kodunuzda herhangi bir şey bulmak imkansız hale gelir. Örneğin, "ERROR_VALUE" adlı bir değişken bulmaya çalışıyorum ama bunun yerine arama dizesinde "error_value 7" alıyorum.

Soru: sorun ne? Bu sol çöp arama çubuğunda nereden geliyor ve nasıl kaldırılır?

Klavyenizi temizleyin.