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

 
itum :

BİR PROBLEMİM VAR ....

Terminal ayarlarında posta kurduğumda, SMTP'de - smtp.gmail.com:25 kullanıyorum

Bir hata alıyorum - Posta: 530 5.7.0 Önce bir STARTTLS komutu vermeli. l3sm2329679fan.0

mail.ru sunucusunun SMTP sunucusu, RFS-2554 kimlik doğrulaması gerektirir. Ne olduğunu bilmiyorum - ama yarasada, bağlantının kurulması için mail.ru posta kutusunun şifresini ve girişini kopyalamak zorunda kaldım. Bu olmadan çalışmayı durdurdu - birkaç yıl önce çalıştı ve sonra orada bir şeyi değiştirdiler. Aynı bağlantı noktası 25 ile smtp.rambler.ru'yu deneyin - belki işe yarar.
 

Lanet olsun, terimler konusunda kafam karıştı. Eğer yardım bizi program yapısında statik bir değişkenin bildirilmesi ve başlatılması gereken bir yere ve 1 ve sadece 1 kez sabit bir şekilde bağlarsa, o zaman diğer tüm girişimlerin bu değişkene başka bir değer atama girişiminde bulunduğunu ve gerçekten de , ona herhangi bir değer atayın, derleyici tarafından bir sözdizimi hatası olarak ele alınmalıdır. Başka bir deyişle, yardımda verilen tanımlara göre, statik değişkenler sabitler için kapsayıcı görevi görür ve program çalışırken değiştirilemez. Nokta. ANCAK! Ne yazık ki, bu kuralın 2 ihlaliyle karşılaştık. Her yerde statik bir değişken bildirebileceğiniz ve istediğiniz zaman yeniden başlatabileceğiniz ortaya çıktı. Yani kılavuzda öyle yazıyor.

Ayrıca, ana program düzeyinde, bu değişkenin bir alt programda bildirilmiş olsa bile global olduğu ortaya çıktı.

Bir alt program içinde global bir değişken bildirmenin aptallığıyla ilk kez karşılaşıyorum - bu, program kodunun anlaşılmasını karıştırıyor. Alt yordamlar içinde bildirilen değişkenlerin ömrü, alt yordamın ömrüne eşit veya daha kısadır. Bu bir klasik. Neden meta alıntılar, alt rutinler içinde global bir değişken ilan etme sapkınlığına ihtiyaç duydu, sadece beyinlerini rafa kaldırabilir.

 
khorosh :

Ayrıca öğreticide, bir kez başlatıldığının açıkça görüldüğü bir statik değişken kullanma örneği de vardır, aksi takdirde onay sayacı çalışmaz.


Öğreticinin yazarı yardım kuralını çiğnedi - init() işlevinden önce statik bir değişken başlatıldı. Soru şu ki, henüz bildirilmemiş bir değişkeni nasıl başlatabilirsiniz? Bu doğru - yapamazsın. Bu nedenle, init() bloğundan önce bir statik değişken bildirilmelidir. Bu basit bir kategorik kıyastır. Eğer A ise, o zaman B. A, öyleyse B kategorik kıyasın olumlayıcı kipidir. Bildirilmemiş bir değişkeni başlatmak için bir yasak varsa (A), o zaman önce bunu bildirin (B), yasak vardır (A), bu nedenle değişkenin ön bildirimi gereklidir (B).

Yazarın statik değişkeni init() bloğundan önce başlatmakla kalmayıp, aynı zamanda yardımın gerekli olduğu programda yanlış yerde de bildirdiği ortaya çıktı!

 

Kahretsin, orası köpeğin gömülü olduğu yer. Bulundu! https://docs.mql4.com/en/basis/variables/initialization

Любая переменная при определении может быть инициализирована. Любая переменная инициализируется нулем (0), если явно не задано другое начальное значение. Глобальные и статические переменные могут быть проинициализированы только константой соответствующего типа. Локальные переменные могут быть проинициализированы любым выражением, а не только константой.

Инициализация глобальных и статических переменных производится однократно. Инициализация локальных переменных производится каждый раз при вызове соответствующих функций.

Yazarların başlatma terimiyle karıştırılmasına yardımcı olun. İlk paragrafta her şey doğru - "başlatma" terimi atama işlemi anlamında kullanılıyor - yani bir değişkeni bir değerle başlatmak ona bir değer atamaktır. İkinci paragrafta, "değişken bildirimleri" ("değişken tanımları") yerine, yardım yazarı yanlışlıkla başlatma terimini kullanmıştır. Bu nedenle, "Global ve statik değişkenlerin başlatılması bir kez yapılır" yargısı. "Genel ve statik değişkenlerin beyanı bir kez yapılır." şeklinde okunmalıdır. Aksi takdirde, saçmalık alırız. Başlatma yalnızca bir kez mümkünse, program yürütme sırasında bu değişkenlerin değerleri hiçbir şekilde değiştirilemez. Geliştiriciler, bunları ve yukarıdaki birkaç gönderide belirtilen hataları düzeltin!

not

Ve sizi takip ederek "değişken başlatma" ile "değişken bildirimi"ni karıştırmaya başladım. Ponasoval değil bu terimler yukarıdaki gönderiler. :(

 
drknn :

Kahretsin, orası köpeğin gömülü olduğu yer. Bulundu! https://docs.mql4.com/en/basis/variables/initialization

Yazarların başlatma terimiyle karıştırılmasına yardımcı olun. İlk paragrafta her şey doğru - "başlatma" terimi atama işlemi anlamında kullanılıyor - yani bir değişkeni bir değerle başlatmak ona bir değer atamaktır. İkinci paragrafta, "değişken bildirimleri" ("değişken tanımları") yerine yardım yazarı yanlışlıkla başlatma terimini kullandı. Bu nedenle, "Global ve statik değişkenlerin başlatılması bir kez yapılır" yargısı. "Genel ve statik değişkenlerin beyanı bir kez yapılır." şeklinde okunmalıdır. Aksi takdirde, saçmalık alırız. Başlatma yalnızca bir kez mümkünse, program yürütme sırasında bu değişkenlerin değerleri hiçbir şekilde değiştirilemez. Geliştiriciler, bunları ve yukarıdaki birkaç gönderide belirtilen hataları düzeltin!

not

Ve sizi takip ederek "değişken başlatma" ile "değişken bildirimi"ni karıştırmaya başladım. Ponasoval değil bu terimler yukarıdaki gönderiler. :(

Başlatma işleminin bir kez gerçekleştirilmiş olması, program yürütme sırasında statik bir değişkenin değerini değiştirebilecek bir atama işleminin gerçekleştirilemeyeceği anlamına gelmez. Bu işlemler, başlatma sırasında, bir değişken türünün bildiriminin, açık veya örtük bir biçimde başlangıç değerinin atanmasıyla birleştirilmesi bakımından farklılık gösterir. init()'ten önce veya herhangi bir fonksiyonun içinde statik bir değişken bildirmeye gelince, bu, bu değişkeni yalnızca bildirildiği işlevden veya başka herhangi birinden çağırma yeteneğini etkiler.
 

Hepsi yaklaşanlarla. Çaydanlığa yardım edin! İyi bir danışman bulun. Şimdilik Cent Depo hesabı 60$

 
khorosh :
Başlatma işleminin bir kez gerçekleştirilmiş olması, program yürütme sırasında statik bir değişkenin değerini değiştirebilecek bir atama işleminin gerçekleştirilemeyeceği anlamına gelmez. Bu işlemler, başlatma sırasında, bir değişken türünün bildiriminin, açık veya örtük bir biçimde başlangıç değerinin atanmasıyla birleştirilmesi bakımından farklılık gösterir. init()'ten önce veya herhangi bir fonksiyonun içinde statik bir değişken bildirmeye gelince, bu, bu değişkeni yalnızca bildirildiği işlevden veya başka herhangi birinden çağırma yeteneğini etkiler.


Evet, atama ve tanımlama kavramlarının denkliği ile hacimlerinin çakıştığını anlayın! Bu, bu 2 terimin eşanlamlı olduğu anlamına gelir!!!

Sorunun derinliklerine, kaynağına iniyoruz. İngilizce-Rusça çevrimiçi sözlüğü açın. Tanımlama terimini tercüme etme girişimi hiçbir şey vermez - tanımlama olarak tercüme edilir. Kelime bize ait değil, bu yüzden online sözlükten ne olduğunu anlamak mümkün değil. Google'a gidiyoruz ve Borovsky'nin "İngilizce-Rusça Programlama Sözlüğü" kitabını indiriyoruz. 128. sayfada aşağıdakileri buluyoruz: http://s2.ipicture.ru/uploads/20101230/XwOJxmkn.jpg Geriye yalnızca kimliğin ne olduğunu bulmak kalıyor. Ozhegov sözlüğünü açıyoruz. Bir sözlük girişi bulma:

KİMLİK, -a ve KİMLİK. -a, bkz. 1. Tam benzerlik, tesadüf. G. görünümler. 2. (kimlik). Matematikte: kurucu niceliklerinin herhangi bir sayısal değeri için geçerli olan bir eşitlik. II adj. özdeş, -th, -th ve özdeş, -th, -th (1 değere kadar). Kimlik cebirsel ifadeler.

Kanıtlamak için ne gerekiyordu! Atama işlemi yapıldıktan sonra, değişkenin değeri, kendisine henüz atanan değerle tamamen çakışacağından, bir değişkenin tanımlanması ve bir değişkenin tanımlanmasının bir ve aynı işlem olduğu sonucuna varıyoruz. atama işlemine tamamen eşdeğerdir. Buna dayanarak, şu sonuca varmak zorundayız: Kural, program yapısında kesin olarak belirtilen bir yerde bir değişkene yalnızca bir ve yalnızca bir kimlik atarsa, bu değişkene başka bir değer atama hakkımız yoktur (zaten kimlik), kimlik kavramı ve atama kavramı beri - eşanlamlıların özü! Nokta.

 
drknn :


Evet, atama ve tanımlama kavramlarının denkliği ile hacimlerinin çakıştığını anlayın! Bu, bu 2 terimin eşanlamlı olduğu anlamına gelir!!!

Sorunun derinliklerine, kaynağına iniyoruz. İngilizce-Rusça çevrimiçi sözlüğü açın. Tanımlama terimini tercüme etme girişimi hiçbir şey vermez - tanımlama olarak tercüme edilir. Kelime bize ait değil, bu yüzden online sözlükten ne olduğunu anlamak mümkün değil. Google'a gidiyoruz ve Borovsky'nin "İngilizce-Rusça Programlama Sözlüğü" kitabını indiriyoruz. 128. sayfada aşağıdakileri buluyoruz: http://s2.ipicture.ru/uploads/20101230/XwOJxmkn.jpg Geriye yalnızca kimliğin ne olduğunu bulmak kalıyor. Ozhegov sözlüğünü açıyoruz. Bir sözlük girişi bulma:

Kanıtlamak için ne gerekiyordu! Atama işlemi yapıldıktan sonra, değişkenin değeri, kendisine henüz atanan değerle tamamen çakışacağından, bir değişkenin tanımlanması ve bir değişkenin tanımlanmasının bir ve aynı işlem olduğu sonucuna varıyoruz. atama işlemine tamamen eşdeğerdir. Buna dayanarak, şu sonuca varmak zorundayız: Kural, program yapısında kesin olarak belirtilen bir yerde bir değişkene yalnızca bir ve yalnızca bir kimlik atarsa, bu değişkene başka bir değer atama hakkımız yoktur (zaten kimlik), kimlik kavramı ve atama kavramı beri - eşanlamlıların özü! Nokta.

Başlatma ve tanımlamanın aynı olduğunu düşünüyor musunuz?
 
khorosh :
Başlatma ve tanımlamanın aynı olduğunu düşünüyor musunuz?

hayır, dur - kafamı karıştırma. Bir dakika bekle.
 
drknn :

hayır, dur - kafamı karıştırma. Bir dakika bekle.
Başlangıçta, başlatma ile ilgiliydi, ancak bir nedenden dolayı tanımlamaya geçtiniz.