Hatalar, hatalar, sorular - sayfa 650

 
Rosh :
Servis Masasına tüm detayları ile birlikte yazınız (gerekirse bir uzmana başvurunuz). Bu daha hızlı olacak
İyi. Bugün kesinlikle yapacağım. Ama yine de genel gelişim için birkaç soru soracağım. :)
mql5 :
Diziler gibi büyük işlevli yerel değişkenler kullanıyor olabilirsiniz.
Bir sonraki derlemede, 32 bitlik bir terminal için, yığın boyutunu ilgili derleyici özelliği #özellik yığın boyutu aracılığıyla kontrol etmek mümkün olacaktır.

Bu sadece 32-bit terminallerde mi sorun oluyor? bende x64 var Bir fonksiyonun büyük boyutlu yerel değişkenleri, örneğin diziler... " nasıl anlaşılır? Yığının taşması için ne kadar büyük olması gerekiyor?
 
tol64 :
Bu sadece 32 bit terminallerde bir sorun mu? bende x64 var Bir fonksiyonun büyük boyutlu yerel değişkenleri , örneğin diziler... " nasıl anlaşılır? Yığının taşması için ne kadar büyük olması gerekiyor?
Hayır, bu sadece bir 32bit terminal sorunu değil. Ancak bugün 32bit için çözüm hazır, 64bit'te hala 256Kb yığın sınırı var.
Ancak programcının kendisi özellik aracılığıyla gerekli yığın boyutunu belirtmezse, terminaldeki EX5 varsayılan yığın boyutuyla (256Kb) çalışacaktır.

Büyük boy hakkında.
Bir işlev içindeki bir değişkenin her bildirimi (statik değişkenler hariç) yığında alan tahsis edilirken, yığında yerel değişkenler için alan tahsisi her çağrıda gerçekleşir.

Bu nedenle, işlevin boyutu 64Kb'lik yerel değişkenlere sahipse, yığın 3 iç içe çağrı için yeterli olacaktır, 4. çağrı ile yığın taşacaktır (çünkü yığının bir kısmı terminalin iç ihtiyaçlarına gider). Bu nedenle, büyük yerel verilere ihtiyaç varsa, dinamik bellek kullanmak daha iyidir - işleve girerken, sistemde yerel ihtiyaçlar için bellek ayrılır (yeni, ArrayResize) ve işlev çıktığında bellek silinir ( sil, ArrayFree).
 

Merhaba!

Bu sorunu anlayamıyorum.

filehandle=FileOpen("My\\Symbols.txt", FILE_READ|FILE_TXT|FILE_ANSI );

Hata ayıklamada iyi çalışıyor, dosya okunabilir, MT5\MQL5\File\ konumunda

Test cihazında çalışırken "Sembols.txt dosyası açılamadı, hata 5004" yazıyor ve tanıtıcı -1

Ayrıca MT5\tester\agent000\MQL5\File klasörüne de kaydırdım, ancak yine görmüyor ve dosya orada hiç öldürülüyor.)

Ancak açıklama şöyle diyor:

"Dosya, MQL5\files alt klasöründeki (veya test durumunda test_agent_directory\MQL5\files) istemci terminal klasöründe açılır."

"işlev yerel klasörde bir dosya arar (test durumunda MQL5\Files veya MQL5\Tester\Files)."

Ve yardımda belirtildiği gibi " MQL5\Tester\Files" klasörüm yok mu?

Neyi yanlış yapıyorum ve bu sorunu nasıl aşabilirim?

Cevabın için teşekkürler.

 

#property tester_file kullanmayı deneyin:

 #property tester_file "My\\Symbols.txt"
 
Rosh :

#property tester_file kullanmayı deneyin:

Wow-x-x Tekrar yerleştirilen MT5\tester\agent000\MQL5\File'a yardımcı olmuş gibi görünüyor, sonra property ile çalışıyor.

Sayesinde!

 
Fia :

Test cihazında -1 tanıtıcısını ve 5004 hatasını tekrar denedim.

Burada başka ne olabilir anlamıyorum, belli ki dosyayı bulamıyor ama hata ayıklarken her şeyi görüyor.

Dosyayı MQL5\Tester\Files klasörüne kopyalayın ( klasörü oluşturduktan sonra).
Документация по MQL5: Файловые операции / FolderCreate
Документация по MQL5: Файловые операции / FolderCreate
  • www.mql5.com
Файловые операции / FolderCreate - Документация по MQL5
 
uncleVic :
Dosyayı MQL5\Tester\Files klasörüne kopyalayın (klasörü oluşturduktan sonra).

Denedim, tutamaçlarla böyle klasörler oluşturdum, dosyamı koydum (bir alt klasörle, kapalı #property tester_file ), test cihazında hiçbir şekilde bulamıyor.

Ve #property tester_file eklerseniz , garip bir şekilde işe yarıyor.

Doğru, zaman zaman MT5\tester\agent000\MQL5\File içindeki bir klasörü ve bir dosyayı kilitliyor, muhtemelen #property tester_file öğesini devre dışı bırakırsanız, oradaki her şeyi ovalar .

Evet, şimdi öğrendim ki mq5 dosyasındaki (txt'nin çağrıldığı yerden) kodu (herhangi bir yerde) değiştirirsem, onu derler ve test cihazına gidersek, MT5\tester\agent000\MQL5\ içindeki her şeyi ovalar. Dosya

Bazı mucizeler, ama en azından bir şekilde iyi çalışıyor.

 
Fia :

Denedim, tutamaçlarla böyle klasörler oluşturdum, dosyamı koydum (bir alt klasörle, kapalı #property tester_file ), test cihazında hiçbir şekilde bulamıyor.

Ve #property tester_file eklerseniz , garip bir şekilde işe yarıyor.

Doğru, zaman zaman MT5\tester\agent000\MQL5\File içindeki bir klasörü ve bir dosyayı kilitliyor, muhtemelen #property tester_file öğesini devre dışı bırakırsanız, oradaki her şeyi ovalar .

Evet, şimdi öğrendim ki mq5 dosyasındaki (txt'nin çağrıldığı yerden) kodu (herhangi bir yerde) değiştirirsem, onu derler ve test cihazına gidersek, MT5\tester\agent000\MQL5\ içindeki her şeyi ovalar. Dosya

Bazı mucizeler, ama en azından bir şekilde iyi çalışıyor.

W7 ise, dosyayı Document and Setting/.../MetaQuotes/Common/Files dizinine koyun veya UAC'yi devre dışı bırakın

Not Yine, adın yazılışını, adın hangi düzenlerde yazıldığını (elbette kopyala-yapıştır yapmak daha iyidir), adın sonunda bir boşluk olup olmadığını vb. kontrol edin.

 
Urain :

W7 ise, dosyayı Document and Setting/.../MetaQuotes/Common/Files dizinine koyun veya UAC'yi devre dışı bırakın

Not Yine, adın yazılışını, adın hangi düzenlerde yazıldığını (elbette kopyala-yapıştır yapmak daha iyidir), adın sonunda bir boşluk olup olmadığını vb. kontrol edin.

Gerçekten, Win7 64bit'im var, ancak UAC sıfırda.

C:\Documents and Settings\All Users\MetaQuotes\Terminal\Common\Files\ Klasörümü ve dosyamı oraya koydum, yardımcı olmadı, dosyayı test cihazında bulamıyor.

Evet, adla ilgili her şey doğru gibi görünüyor, ancak testte #property tester_file üzerinde çalışıyor (ve herhangi biri için hata ayıklama üzerinde çalışıyor), ancak test cihazında, #property tester_file aracılığıyla olduğu kadar kısa sürede çalışmıyor.

Ve sonra yukarıda belirtilen sorunla, mq5'i değiştirip derledikten sonra bir dosyayı öldürme sorunuyla (böyle bir durumum var).

 

Yardımınızda bariz bir yalan yazılmıştır:

CLBufferWrite

Bir OpenCL arabelleğine bir dizi yazar.

bool CLBufferWrite (
    int            tampon              // OpenCL arabelleğini işle
    const void&    veri[]              // değerler dizisi
    uint           ofset=0            // hangi öğeden, varsayılan olarak ilkinden
    geçersiz           boyut=WHOLE_ARRAY    // değerlerin sayısı, varsayılan olarak tüm dizi
);

Seçenekler

......

telafi etmek

.....

boy

[içinde] Yazılacak değer sayısı. Varsayılan olarak, tüm dizi değerleri OpenCL arabelleğine yazılır.

......

Aslında, bayt sayısı (!!) yazılmıştır ve hiç değer değildir.

Bitirene kadar göstergede hata ayıklamak için iki akşam geçirdim ..! Ve neden her şey? - Patamushta senin kutsal kitabına inanıyordu...

HEMEN DÜZELTİN!! :))

// Zamanında tahmin etmedim, çünkü varsayılan olarak ( size=WHOLE_ARRAY ) düzgün çalışıyor.

Neden: