Hiçbir şey anlamamış olmama rağmen makaleyi beğendim.
"Bu yüzden şablonlar tarafından çözülen ana görev hala bir programcı tarafından klavyeden yazılan kod miktarını azaltmaktır."
Kopyala-yapıştır olmadan yapabilecekken neden şablonlarla uğraşasınız ki? Ve yazılan kod miktarı sizi hiç rahatsız etmiyor - iyi, 100 yerine 300 satır kod olacak - öyleyse sorun ne? Önemli olan, çalışması ve hata ayıklamanın aşırı stres yaratmamasıdır.
Ve kod şablonlar olmadan daha şeffaf olacaktır.
Hiçbir şey anlamamış olmama rağmen makaleyi beğendim.
"Bu yüzden şablonlar tarafından çözülen ana görev hala bir programcı tarafından klavyeden yazılan kod miktarını azaltmaktır."
Kopyala-yapıştır olmadan yapabilecekken neden şablonlarla uğraşasınız ki? Ve yazılan kod miktarı sizi hiç rahatsız etmiyor - iyi, 100 yerine 300 satır kod olacak - öyleyse sorun ne? Önemli olan, çalışması ve hata ayıklamanın aşırı stres yaratmamasıdır.
Ve kod şablonlar olmadan daha şeffaf olacaktır.
300 :)
10-20K'ya ne dersiniz (ve bu modüllere ayırmayı hesaba katıyor)...? ?
300 :)
Peki ya siz 10-20 bin (ve bu, modüllere bölünmeyi de hesaba katıyor) .... ?
20,000 mi? Tanrım, oraya nasıl giriyorsun? Belki de algoritma henüz tamamlanmamıştır? Bu boyutlar uzun zaman önce kütüphanelere konulmalıydı. Ne programlıyorsun? 20,000 satır, altı aylık çalışma için 10 programcı demek.
Kütüphanelere gelince, size söyledim - modülerliği dikkate alarak.
20K'ya gelince, daha fazlasını gördük. Örneğin, 1C 7.7 için modzli 50K satırdır (ve bu kendi kodları değil, başkasının kodu).
Görevin özünü anlamadıysam beni affedin. C++'da kaynak kod kayıtlarının kaydedilmesi vardır, burada yoktur. C++'daki fonksiyon şablonları gerçekten nerede tasarruf edebileceğinizi gösterir. "Kaynak kodu kaydetmek" anahtar fikirdir.
Ve daha sonra üzerinde çalışmayı zorlaştırmak için açıkça aşırı miktarda kaynak kodu oluşturmak, hayır, lütfen.
Farklı veri türleri için aynı işleve mi ihtiyacınız var? MQL5' te metot aşırı yüklemesi vardır. Bunu bildiğinizden hiç şüphem yok. Özellikle de girdi verisinin türünü değiştirmek genellikle uygulamayı değiştirmeyi gerektirdiğinden.
Ve bu konuda:
>>Hata ayıklama için elbette dosyayı çağrılan dosyanın dizinine veya Include dizinine taşımanız gerekecektir. Bu tam da yukarıda sözde şablonların dezavantajlarından bahsederken bahsettiğim hata ayıklama sıkıntısıdır.
Hiçbir şeyi manuel olarak taşımanıza gerek yoktur.
#property copyright "Copyright 2010, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Uzman başlatma işlevi| //+------------------------------------------------------------------+ void gena() { string filename="code.mqh"; int handle=FileOpen(filename,FILE_WRITE|FILE_UNICODE); //-- keyfi kod üretimi string st=TimeToString(TimeLocal(),TIME_DATE|TIME_MINUTES|TIME_SECONDS); string code="MessageBox(\"Merhaba Dünya! Şimdi: "+st+"\");\r\n"; //------------------------------ FileWriteString(handle,code); FileClose(handle); } //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ int OnInit() { //--- gena(); #include "../Files/code.mqh"; //oluşturulan kodu ekleyin //--- return(0); }
Örnek ilkeldir. Inkludes fonksiyonların içine eklenebilir. Ve dahil edilen dosyadaki tüm kod, ekleme yerinin görünürlüğü kapsamında hareket eder. Tek şey, derleyicinin küfür etmesini önlemek için Dosyalar'da boş bir code.mqh dosyası oluşturmanız gerekecek. İlk çalıştırmada kod oluşturulacak ve ikinci çalıştırmada oluşturulan parçayı içerecektir.
Nikolai, sana bir sorum var. Bir dizeyi değerlendirecek bir fonksiyonunuz var mı? Örneğin:
a=1.5 sonucunu veren bir void eval(str) fonksiyonuna ihtiyacım var.
Makale güzel, teşekkür ederim!
Anladığım kadarıyla soru değerlendirme ile ilgili değil, ayrıştırma ile ilgili. Ayrıştırma çok yönlüdür.
Farklı kurallar yazabilirsiniz. Her şey ne elde etmek istediğinize bağlıdır.
Örneğin: bu tür örneklerde ayrıştırıcı nasıl davranmalı?
"double a=1.5;" "double a =1.5;" "double a = 1.5;" "double a=1.5,b=2.5;" "double a =1.5,b =2.5;" "double a = 1.5,b = 2.5;" "double a = 1.5 , b = 2.5 ;"bilirsiniz. Size sadece basit örnekler üzerinde string fonksiyonları bölümünün işlevselliğini incelemenizi tavsiye edebilirim. İşlevleri bellekten çalıştırabilirseniz, gelişiminizi işlevselliğin olanaklarına göre planlayabileceksiniz. Neyi yapıp neyi yapamayacağınızı düşünmeden. İşlevselliğin olanaklarını bilerek, görevinizi çözmek için hangi algoritmanın en uygun olacağı konusunda net bir fikriniz olacaktır.
Anladığım kadarıyla soru değerlendirme ile ilgili değil, ayrıştırma ile ilgili. Ayrıştırma çok yönlüdür.
Farklı kurallara sahip olabilirsiniz. Her şey ne elde etmek istediğinize bağlıdır.
Örneğin: bu tür örneklerde ayrıştırıcının nasıl davranması gerektiği.
bilirsiniz. Size sadece basit örnekler üzerinde string fonksiyonları bölümünün işlevselliğini incelemenizi tavsiye edebilirim. İşlevleri bellekten çalıştırabilirseniz, gelişiminizi işlevselliğin olanaklarına göre planlayabileceksiniz. Neyi yapıp neyi yapamayacağınızı düşünmeden. İşlevselliğin yeteneklerini bilerek, görevinizi çözmek için hangi algoritmanın en uygun olacağı konusunda net bir fikriniz olacaktır.Cevap için çok teşekkürler... Soru üzerinde çalışacağım

- www.mql5.com

- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Yeni makale C++ Şablonlarına Alternatif Olarak Sahte Şablonları Kullanma yayınlandı:
Makale, şablonları kullanmadan, ancak şablonlarda iherenet programlama stilini koruyarak programlamanın bir yolunu açıklar. Özel yöntemler kullanarak şablonların uygulanmasını anlatır ve belirtilen şablonlar temelinde bir kod oluşturmak için eklenmiş hazır bir komut dosyasına sahiptir.
Her şeyden önce, tüm gerekli parametreleri belirten betiği başlatalım. Açılan pencerede "Örnek şablon" dosya adını belirtin.
Özel veri türlerinin alanlarını ayırıcı olarak ';' işaretini kullanarak doldurun.
"Tamam" düğmesine basılır basılmaz Şablonlar dizini oluşturulur; "Örnek templat.mqh" ön şablon dosyasını içerir.
Bu olay, günlükte şu mesajla görüntülenir:
Yazar: Nikolay Demko