Kitle kaynaklı GUI. Açık beta testi. - sayfa 48

 

Peter, bana istediğin gibi davranabilirsin, bu senin hakkın, ama biraz daha deneyimli bir yoldaşın tavsiyesini dinle.

 #include <GUI_DRIVE.mqh>
#include "..\Files\CORES.mqh"
#include "..\Files\Internal_API.mqh" 

GUI_DRIVE.mqh dosyası, koda ilk olarak dahil edilir. Kendisinden önce hiçbir şey açıklanmadı.

Kendiniz derlerseniz, G_CORE yokluğunda bir hata verecektir ve dizi bu dosyada bildirilmediği için bu mantıklıdır!

Çözüm? Pekala, burada sonuç basit: bu dizi bu dosyada bildirilmelidir. Sonuçta, bu diziyle çalışan bu dosyadır, çünkü bu dosya "motor"dur! Bu nedenle, kullanım bağlamına göre dizinin kendisinin bildirimi doğrudur.

Bir sonraki dosya olan CORES.mqh'de dizinin kendisi form öğelerinin açıklamasıyla doldurulur.

Tabii ki, EA'nın kendisini bu dosyalarla derlerken, dizi ilk dosyada bildirilirse, derleme sorunu olmayacaktır, çünkü ikinci dosya derlenirken, dizi zaten program içeriğine görünür olacaktır.

Ancak her dosyanın hatasız derlenmesi gerektiğinden bahsediyoruz. İkinci dosyadaki G_CORE dizisi elementlerle dolu olduğu için diziyi bildirmezsek bu dosyayı derlerken bir hata ile karşılaşmamız oldukça doğaldır.

Ve burada İskender'in dediği gibi bir saplama kullanıyoruz.

Peter, tanımlarda "bir köpek yedin", böylece hilenin ne olduğunu hemen anlayacaksın.

GUI_DRIVE dosyasında, çekirdek G_CORE öğelerinin global bir dizisini bildirirsiniz, bundan sonra dosyanın hatasız derlenmesi gerekir.

Bu dosyada ayrıca bir tanım eklersiniz

 #define __DRIVE__

Çekirdeklere geçelim. Bir dizi bildirmeden önce derleme önişlemcisini kullanın.

 #ifndef __DRIVE__
int G_CORE[][prop_limit];
#endif

Ve sonra dizinin kendisini doldurursunuz. Tabii ki, bunu bir bildirim olmadan yapmak için diziyi doldurma şeklinizi biraz değiştirmeniz gerekecek.

Sanırım konuyu anladınız: CORES dosyası derlendiyse, __DRIVE__ tanımlaması yoktur ve dizi bildirim kodu derlenir ve ardından her şey normal şekilde çalışır.

Dosya bir Expert Advisor'ın parçası olarak derlenmişse, ilk dahil edilen dosyanın derlenmesinden sonra bir tanım bildirilir ve derleyici bu kod parçasını "keseceği" için dizi ikinci dosyada bildirilmez.

Umarım gerçekten açık bir şekilde anlatabilmişimdir.

Yine, her dosya hatasız derlenmelidir. Bağımlılıklar varsa, konumlarını doğru bir şekilde sağlamanız ve gerekirse yeniden derleme işlemcileri eklemeniz gerekir.

Dosyalarınızın her biri hatasız derlendiğinde, tüm sistemin bütünlüğüne daha fazla güven duyulur.

Ve her dosyaya bir özellik eklemeyi unutmayın:

 #property strict

Bu özellik daha sıkı bir kod kontrolü sağlar.

 
Bu biraz pratik mantıklı. Her dosya hatasız derlenirse, genel derlemenin bütünlüğü ne olursa olsun, kullanıcı dosyalardan birini eklemeyi kolayca kaçırabilir. Unutmak için ilkokul.

Kısacası, o kadar önemsiz ki üzerinde zaman harcamayacağım. Bu tamamen saçmalık. Şike.
 
Evet, önişlemci ile yapılan manipülasyonlar sayesinde her dosyanın hatasız olarak ayrı ayrı derlenmesini sağlayabilirsiniz.

Ama bunda bir yanlışlık var. Bunlar bütünün parçalarıdır ve diğer parçalardan bağımsız gibi görünmemelidirler. Aslında, kullanıcı bu şekilde çalıştığı için tüm dosyaların gerekli olmadığına karar verebilir.

Anlamı çok şüpheli olan böyle bir faaliyet için zaman harcamak mı? Kimi kandırmaya çalışıyorum? Derleyici?

Görünüşe göre "deneyimli" yoldaşlar sert sesinden korkuyor ve onu her zaman ve her şeyde doğru görüyor. Yani hiçbir anlamı olmasa da uyum sağlamaya çalışıyorlar.

Sabitlerin önünde (sring) olması gerektiğinden, biçimlendirme dili kodumda binlerce uyarı vardı. Her sayının önünde bir türe göre bir atama varsa, kodun nasıl görüneceğini hayal edebiliyorum. Ancak, hiçbir uyarı olmayacaktı.
 
Реter Konow :
Evet, önişlemci ile yapılan manipülasyonlar sayesinde her dosyanın hatasız olarak ayrı ayrı derlenmesini sağlayabilirsiniz.

Ama bunda bir yanlışlık var. Bunlar bütünün parçalarıdır ve diğer parçalardan bağımsız "taklit" yapmamalıdırlar. Aslında, kullanıcı bu şekilde çalıştığı için tüm dosyaların gerekli olmadığına karar verebilir.

Anlamı çok şüpheli olan böyle bir faaliyet için zaman harcamak mı? Kimi kandırmaya çalışıyorum? Derleyici?

Görünüşe göre "deneyimli" yoldaşlar sert sesinden korkuyor ve onu her zaman ve her şeyde doğru görüyor. Yani hiçbir anlamı olmasa da uyum sağlamaya çalışıyorlar.

Sabitlerin önünde (sring) olması gerektiğinden, biçimlendirme dili kodumda binlerce uyarı vardı. Her sayının önünde bir türe göre bir atama varsa, kodun nasıl görüneceğini hayal edebiliyorum. Ancak, hiçbir uyarı olmayacaktı.

Burada, bazı yoldaşlar, meta editörün arayüzünü biraz değiştiren ayrı bir yazılım yapmak için yazıyorlar - sadece kullanım kolaylığı için!

Bu standart, bir tweeter aracılığıyla Mors kodu yazmak yerine klavye kullanmak gibidir. Saplamalar, derleme sırasında dosyalar arasında sürekli sayfalama dışında hiçbir şeyi değiştirmez. Ancak saplama 2 satır koddur. Ve sadece bir düğmeye basmak için bu çevirmeye ne kadar zaman harcayacağız. Ve böyle 7'yi kaç kez çevireceğiz ve hayatımızı bir gıcırtı aracılığıyla mektup doldurmakla harcamamak için daha mantıklı olan ne?

Şimdi dikkat edin, nesneler veya sınıflardan değil, sadece zamandan tasarruf etmekten bahsediyoruz. Zamanınızın .. Ayrıca, bunları kendiniz yazmak için bir standart oluşturabilirsiniz.
 
Varsayılan olarak İngilizce geliştirme ortamı tarafından ayrımcılığa uğrayan Rusça kodlamadan bahsetmiyorum. Ayrıca uyarlayın ve beyninizi sefil bir üretkenliğin %30'unu bırakın, Rusça'da ise %100'ünü kullanabilir miyim?

"Profesyonellik"in bedeli budur.
 
Реter Konow :
Varsayılan olarak İngilizce geliştirme ortamı tarafından ayrımcılığa uğrayan Rusça kodlamadan bahsetmiyorum. Ayrıca uyarlayın ve beyninizi sefil bir üretkenliğin %30'unu bırakın, Rusça'da ise %100'ünü kullanabilir miyim?

"Profesyonellik"in bedeli budur.

Profesyonel kodda, genellikle kendi veri türlerini kullanırlar. Hangi dilde oldukları umurumda değil.

Ancak fonksiyon şu sırayla bir tamsayı bekliyorsa: (genişlik, yükseklik) alalım.

Ve bunun yerine yanlışlıkla karıştırdık ve yazdık.

Alalım (yükseklik, genişlik) - o zaman derleyicinin kendisi burada kafamızın karıştığını söylüyor. İşe yarıyor mu - burada da dil veya nesnelerden bahsetmiyoruz. Ve bu hatayı daha sonra kendiniz aramamak için

 
Alexandr Andreev :

Profesyonel kodda, genellikle kendi veri türlerini kullanırlar. Hangi dilde oldukları umurumda değil.

Ancak fonksiyon şu sırayla bir tamsayı bekliyorsa: (genişlik, yükseklik) alalım.

Ve bunun yerine yanlışlıkla karıştırdık ve yazdık.

Alalım (yükseklik, genişlik) - o zaman derleyicinin kendisi burada kafamızın karıştığını söylüyor. İşe yarıyor mu - burada da ne bir dil ne de nesneler. Ve bu hatayı daha sonra kendiniz aramamak üzere

Bu dal, hazır çözümleri test ediyor ve kullanıcılara ulaştırıyor.

Şikayet edecek bir şey arayan kibirli "profesyonellere" değil, yapıcı test uzmanlarına ihtiyacım var.

Soyut konuları tartışmayacağım. Monte edilmiş panel bağlandı, hatalar bulundu, rapor edildi mi? Çok teşekkürler! Zekiymiş gibi davranıyorsun ve anlamadığın şeyde kusur buluyorsun - hoşçakal.
 
Beyler akıllı adamlar, buraya ait değilsiniz.

Düzenleyiciyi başlatmayan ve paneli bağlamayan, ancak "öğreten" kişilerle konuşma kısadır.

Gerisi, hoş geldiniz!
 
Алексей Барбашин :

Peter, bana istediğin gibi davranabilirsin, bu senin hakkın, ama biraz daha deneyimli bir yoldaşın tavsiyesini dinle.

......

Ve her dosyaya bir özellik eklemeyi unutmayın:

 #property strict

Bu özellik daha sıkı bir kod kontrolü sağlar.

bu ilk beşin altında yapılır - her zaman katıdır!

genel olarak katılıyorum: derleme sırasında bir sürü uyarı, kodun güvenilirliğini artırmaz.

 
Igor Zakharov :

bu ilk beşte yapılır - her zaman katı kurallar vardır!

genel olarak katılıyorum: derleme sırasında bir sürü uyarı, kodun güvenilirliğini artırmaz.

Uyarıları kaldıracağım. Geçici.
Neden: