[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 291

 
alsu >> :

"kütüphane" (fonksiyonların #import kullanılarak çıkarıldığı) ve "dahil edilen başlık dosyası" (#include) kavramlarını karıştırıyorsunuz.


Kitaplıklar kitaplıklar klasöründe bulunur, kaynakları *.mq4 uzantısına sahiptir, göstergeler ve uzmanlar gibi, bir *.ex4 dosyasında derlenirler (bu dosyadan hazır işlevler daha sonra bunun gibi diğer programlara aktarılır -

Kütüphanenin doğru derlenebilmesi için kural olarak öncelikle #property library yönergesini yazmanız gerekir.

Dahil edilen başlık dosyaları, çeşitli programlarda hazır kod parçalarını dahil etmek için kullanılır, içerirler klasöründe bulunur, *.mqh uzantısına sahiptir, # işareti kullanılarak programın metnine (yani metinde) dahil edilir. <...> yönergesini dahil edin, bunları ayrıca derlemeniz gerekmez, çünkü .to. ana programla birlikte derlenirler.

Bu arada, kütüphane daha önce #property kütüphanesi ile şablona göre oluşturulmuştu, ama şimdi kimse şablonu neden değiştirdiğini veya eklemeyi unuttuğunu bilmiyor mu?

Not Alsu olmasaydı, sorgulayanın ne hakkında bilmek istediğini anlayamazdım, yaşlanıyorum.

 
Urain >> :

Bu arada, kütüphane daha önce #property kütüphanesi ile şablona göre oluşturulmuştu, ama şimdi kimse şablonu neden değiştirdiğini veya eklemeyi unuttuğunu bilmiyor mu?

Not Alsu olmasaydı, sorgulayanın ne hakkında bilmek istediğini anlayamazdım, yaşlanıyorum.

Şablonu manuel olarak düzenleyebilirsiniz :)

 
alsu >> :

Şablonu manuel olarak düzenleyebilirsiniz :)

Evet evet biliyorum ama bir keresinde hata bulmak için 2 gün öldürmüştüm ama iş yeni yapıda farklı bir şablonda.

 
Urain >> :

..eğer soranın ne hakkında bilmek istediğini anlamasaydım, yaşlanıyorum.

Tecrübeli yaşlılar, "askerin" kütüphane koduna bakın ve yazarın yazarken aklından ne geçtiğini bana açıklayın.

 

Afedersiniz.

Çok şey yazıldı ama hala sorunun cevabını anlamış değilim. Yapamadığımı tekrar açıklamaya çalışacağım.

#include<...> yönergesini eklediğim bir Uzman Danışman yaptığımı ve ardından bir kod parçası içeren bir başlık dosyası oluşturduğumu varsayalım.

Danışmanı derledi ve ticarete dahil etti. Her şey çalışıyor. Sergei Kovalev'in bir alıntısına dayanarak:

"... ex4 dosyasının kendi kendine yeterli olduğunu da ekleyebilirsiniz - çalışması için,
include öğesinin kullanıcı tanımlı işlevlerin kaynak kodlarını içermesi gerekli değildir.
Ex4 dosyası kopyalanabilir, diğer tüccarlara aktarılabilir ve orada kullanılabilir.

Üretim teknolojisi ne olursa olsun eksiksizdir."

Danışmanımı alıyorum, kopyalıyorum ve başka bir bilgisayara, başka bir tüccara aktarıyorum. Bundan sonra EA çalışmak istemez ve #include<...> adında bir fonksiyon olmadığını, yani dahil edilen başlık dosyasını görmediğini ve derlenmediğini yazar .

İşte bir EA örneği ve dahil edilen bir başlık dosyası. Soruda neyin yanlış olduğunu görün.

//+------------------------------------------- --------------------+
//| qibliot.mq4 |
//| Telif Hakkı © 2009, MetaQuotes Yazılım A.Ş. |
//| http://www.metaquotes.net |
//+------------------------------------------- --------------------+
#property telif hakkı "Telif hakkı © 2009, MetaQuotes Software Corp."
#özellik bağlantısı "http://www.metaquotes.net"

#include <PointZigZag.mqh>

//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int başlangıç()
{PointZigZag();
Comment("Sat-y21 = ",y21," ","Yer-x21 = ",x21);
dönüş(0);
}

//+------------------------------------------- --------------------+

ve

//+------------------------------------------- --------------------+
//| PointZigZag.mqh |
//| Telif Hakkı © 2009, MetaQuotes Yazılım A.Ş. |
//| http://www.metaquotes.net |
//+------------------------------------------- --------------------+
#property telif hakkı "Telif hakkı © 2009, MetaQuotes Software Corp."
#özellik bağlantısı "http://www.metaquotes.net"

dış int Dış Derinlik = 12; //------- ZigZag değişkenleri
dış int DışSapma = 5; //------- ZigZag değişkenleri
harici int ExtBackstep = 3; //------- ZigZag değişkenleri
extern int ShiftBars = 2; //------- ZigZag değişkenleri
//------- ZigZag değişkenleri ------------------------------------------ ---
çift y3, y2, y1, zz;//
int x3, x2, x1, sh;//
çift x31, x21, x11; // ZigZag Büküm Noktaları
çift y31, y21, y11; // ZigZag Büküm Noktaları
çift TimeZZ, TimeOO;
//------------------------------------------------ ------------------------------

doublePointZigZag()
{y3=0;y2=0;y1=0;
sh=ShiftBar'lar;
iken (y3==0)
{zz=iCustom(NULL, 0, "ZigZag", ExtDepth, ExtDeviation, ExtBackstep, 0, sh);
if (zz!=0 && zz!=BOŞ_DEĞER)
{if (y1==0) { x1=sh; y1=zz; }
else if (y2==0) { x2=sh; y2=zz; }
else if (y3==0) { x3=sh; y3=zz; }}sh++;
}
if (Yüksek[x1]>Yüksek[x2])
{x11=Yüksek[x1]; x21=Düşük[x2]; x31=Yüksek[x3];
y11=0;y21=0;y31=0;ZamanZZ=Zaman[x2];
}başka
{y11=Düşük[x1]; y21=Yüksek[x2]; y31=Düşük[x3];
x11=0;x21=0;x31=0;ZamanZZ=Zaman[x2];}

}

//+------------------------------------------- --------------------+
 
lütfen derleyicinin değişmeden attığı hatayla ilgili satırı verin
 
gvi2504 >> :

Afedersiniz.

Çok şey yazıldı ama hala sorunun cevabını anlamış değilim. Yapamadığımı tekrar açıklamaya çalışacağım.

#include<...> yönergesini eklediğim bir Uzman Danışman yaptığımı ve ardından bir kod parçası içeren bir başlık dosyası oluşturduğumu varsayalım.

Danışmanı derledi ve ticarete dahil etti. Her şey çalışıyor. Sergei Kovalev'in bir alıntısına dayanarak:

"... ex4 dosyasının kendi kendine yeterli olduğunu da ekleyebilirsiniz - çalışması için,
include öğesinin kullanıcı tanımlı işlevlerin kaynak kodlarını içermesi gerekli değildir.
Ex4 dosyası kopyalanabilir, diğer tüccarlara aktarılabilir ve orada kullanılabilir.

Üretim teknolojisi ne olursa olsun eksiksizdir."

Danışmanımı alıyorum, kopyalıyorum ve başka bir bilgisayara, başka bir tüccara aktarıyorum. Bundan sonra EA çalışmak istemez ve #include<...> adında bir fonksiyon olmadığını, yani dahil edilen başlık dosyasını görmediğini ve derlenmediğini yazar .

İşte bir EA örneği ve dahil edilen bir başlık dosyası. Soruda neyin yanlış olduğunu görün.


Doğal olarak, böyle bir yönergeye göre, dahil edilen dosya ayrıca içerme dizinindeki başka bir bilgisayarda da bulunmalı ve beyninizi hiç boşa harcamamalı, her şeyi bir kağıda yazmalı, bir kod parçasını fonksiyon olarak seçmeli, sürücüye sürmeli. Çarşafın ucu ayağınızın altından sarkmasın diye ve her şey açılıp kapanmasın diye hayatı neden kendinize zorlaştırıyorsunuz. #include ve #import yönergeleri 1000'den fazla satırdan oluşan ve birkaç düzine ayrı programdan oluşan bir program kompleksi yazmak için gereklidir (IMHO), aksi takdirde bunlar iyiden daha fazla kafa karıştırıcıdır.

 
alsu >> :
lütfen derleyicinin değişmeden attığı hatayla ilgili satırı verin

Derleyici aşağıdaki satırı yazar

'PointZigZag.mqh' - D:\Program Files\MetaTrader2\experts\Kibliot.mq4 (10, 1) program dosyasını açamıyor

 
gvi2504 >> :

Derleyici aşağıdaki satırı yazar

'PointZigZag.mqh' - D:\Program Files\MetaTrader2\experts\Kibliot.mq4 (10, 1) program dosyasını açamıyor

yukarıdaki cevaba bakın - dahil edilen PointZigZag.mqh dosyasını dahil etme klasörüne koyun

 
alsu >> :

yukarıdaki cevaba bakın - dahil edilen PointZigZag.mqh dosyasını dahil etme klasörüne koyun

Ayrıca Kibliot.mq4 dosyasını derlemesi gereken tüm bilgisayarlarda.

Neden: