"Uzman Danışmanlara göstergeler eklemek için hazır şablonlar (Bölüm 1): Osilatörler" makalesi için tartışma

 

Yeni makaleye göz atın: Uzman Danışmanlara göstergeler eklemek için hazır şablonlar (Bölüm 1): Osilatörler.

Makale, osilatör kategorisindeki standart göstergeleri ele almaktadır. Uzman Danışmanlarda kullanımları için kullanıma hazır şablonlar oluşturacağız - parametrelerin bildirilmesi ve ayarlanması, göstergenin başlatılması ve sonlandırılması, ayrıca Uzman Danışmanlardaki gösterge arabelleklerinden veri ve sinyal alınması.

Bir Uzman Danışmana göstergeler dahil etmek ve Uzman Danışmandaki gösterge arabelleğinden verileri kullanmak, referans materyallere sürekli göz atmayı gerektirse de oldukça basit bir iştir. Gösterge oluşturma fonksiyonuna aktarılan tüm parametreleri hatırlamamız, bazılarını Uzman Danışman girdileri olarak düzenlememiz, geçerlilik kontrollerini tanıtmamız vb. gerekir. Verileri elde etmek için, istenen çubuktan gerekli verileri geri döndüren fonksiyonlar yazmamız gerekir. Tüm bunlar, her seferinde yardıma başvurmak, gerekli değişkenleri Uzman Danışmana girmek, sinyalleri belirlemek üzere verileri almak ve kontrol etmek için fonksiyonlar yazmak vb. için zaman harcamayı gerektirir.

Bu makalenin amacı, Uzman Danışmanlara göstergeler dahil etmek için şablonlar oluşturmaktır. Osilatör kategorisindeki göstergelere, girdi değişkenlerine, bir gösterge tanıtıcısı oluşturmaya ve ondan gerekli verileri elde etmeye bakalım.


Yazar: Artyom Trishkin

 
Neden wint'ten int'e ve neden ilk etapta böyle bir tasarım isteyesiniz ki?
//--- Gerekirse hesaplama dönemini ayarlayın ve ayarlayın
   period=int(InpPeriod<1 ? 14 : InpPeriod);

Girdinin sabit olduğunu anlıyorum. Bu görevi hayal bile edemiyorum.

Sadece eksi koyan bir aptala karşı bir savunma olarak, ancak o zaman kişinin hata yaptığına dair bir uyarı olması daha iyi olurdu.

 
Valeriy Yastremskiy #:
Neden uint'ten int'e ve neden böyle bir yapı?

Girdinin bir sabit olduğunu anlıyorum. Bu görevi hayal bile edemiyorum.

Sadece eksi koyan bir aptala karşı bir savunma olarak, ancak o zaman kişinin hata yaptığına dair bir uyarı olması daha iyi olurdu.

InpPeriod bir girdi değişkeni girdisidir. Oraya eksi koymanın bir yolu yoktur. Oraya bir sıfır koyabilirsiniz. Bu tür kontroller (birden az için) sayıları doğrudan sıfırla karşılaştırmama alışkanlığıdır - aniden başka bir benzer yapıda çift tipli bir giriş değişkeni olacaksa, iki çift sayının doğrudan karşılaştırılmasından kaçınmamı sağlayacaktır. Evet, bu "kusursuz". Her şeyden önce kendimden - kodu başka yerlere taşırken daha az hata yapmak için.

 
Artyom Trishkin #:

InpPeriod - giriş değişkeni girişi. Oraya eksi koymanın bir yolu yoktur. Oraya bir sıfır koyabilirsiniz. Bu tür kontroller (birden az için), sayıları doğrudan sıfırla karşılaştırmama alışkanlığıdır - aniden başka bir benzer yapıda çift tipli bir giriş değişkeni olacaksa, iki çift sayının doğrudan karşılaştırılmasından kaçınmamı sağlayacaktır. Evet, bu "kusursuz". Her şeyden önce kendimden - kodu başka yerlere taşırken daha az hata yapmak.

Şey, evet, bu uint)))))) Üzerine bir eksi koyamazsınız))))

 
Valeriy Yastremskiy #:

Şey, evet, wint))))))) Üzerine bir eksi koyamıyorum))))

Ya sıfır?

 
Alexey Viktorov #:

Ya sıfır?

Ve sıfır mümkündür. Ancak gösterge bu durumda varsayılan değere ayarlanacaktır.

Ancak sorunuzun amacı başka bir şeydi - sıfırı zaten biliyorsunuz.

Ama tahmin etmeyeceğim

 
Artyom Trishkin #:

Ve sıfır mümkündür. Ancak bu durumda gösterge varsayılan değere ayarlanacaktır.

Ancak sorunuzun amacı başka bir şeydi - sıfırı zaten biliyorsunuz.

Ama tahmin etmeyeceğim.

Bu doğru. Tahmin etmeye gerek yok. Sadece Valery için bir soruydu. Eksi koyamazsın, ama sıfır koyabilirsin?

 
Alexey Viktorov #:

Ya sıfır?

Yani sıfır akımdır)))) Kusursuz bir tasarım iyi olduğu için))))))

Ve klavyeye bir maske koyabilirsiniz, böylece sadece rakamlara basılır ve diğer tuşlara basılmaz)))))) 90'lı yıllardaki askerler için)))))) Ve diğer tuşlara basarken, büyük harflerle bir uyarı belirdi))

 
Artyom Trishkin #:

Selamlar!

Metni hücrenin ortasına nasıl hizalayabilirim?


 
Vitaly Muzichenko #:

Selamlar!

Metni hücrenin ortasına nasıl hizalayabilirim?


Merhaba. Farklı bağlantı noktalarına sahip hücrelere metin çıkışı yaptığımı sanmıyorum.

Ancak sütun_genişliğinin hücrenin genişliği, sütun_yüksekliğinin yüksekliği olduğunu varsayarsak,
ve metin_w ve metin_h hücrede çıktısı alınacak metnin karşılık gelen boyutlarıdır,
o zaman metnin sol üst köşesinin koordinatları bu formüller kullanılarak hesaplanmalıdır:

Çapa text_x text_y
LEFT_UPPER 0 0
SOL 0 (column_height - text_h)/2
SOL_ALT 0 column_height - text_h
AŞAĞI (sütun_genişliği - metin_genişliği)/2 column_height - text_h
RIGHT_LOWER column_width - text_w column_height - text_h
DOĞRU column_width - text_w (column_height - text_h)/2
RIGHT_UPPER column_width - text_w 0
ÜST (sütun_genişliği - metin_genişliği)/2 0
MERKEZ (sütun_genişliği - metin_genişliği)/2 (column_height - text_h)/2

Burada metin sabitleme - varsayılan olarak - sol üst köşedeki ilk metin koordinatları ve metni bağlantı noktasına (tablo başlığındaki bağlantı) bağlı olarak görüntülemek için, metin koordinatlarını yukarıdaki formüllere göre hesaplamanız gerekir.

 
Artyom Trishkin #:

Merhaba. Farklı bağlantı noktalarına sahip hücrelere metin çıkışı yaptığımı sanmıyorum.

Ancak sütun_genişliğinin hücrenin genişliği, sütun_yüksekliğinin yüksekliği olduğunu varsayarsak,
ve metin_w ve metin_h hücrede çıktısı alınacak metnin karşılık gelen boyutlarıdır,
o zaman metnin sol üst köşesinin koordinatları bu formüller kullanılarak hesaplanmalıdır:

Çapa text_x text_y
LEFT_UPPER 0 0
SOL 0 (column_height - text_h)/2
SOL_ALT 0 column_height - text_h
AŞAĞI (sütun_genişliği - metin_genişliği)/2 column_height - text_h
RIGHT_LOWER column_width - text_w column_height - text_h
DOĞRU column_width - text_w (column_height - text_h)/2
RIGHT_UPPER column_width - text_w 0
ÜST (sütun_genişliği - metin_genişliği)/2 0
MERKEZ (sütun_genişliği - metin_genişliği)/2 (column_height - text_h)/2

Burada metin sabitleme - varsayılan olarak - sol üst köşedeki metnin ilk koordinatları ve bağlantı noktasına (tablo başlığındaki bağlantı) bağlı olarak metni görüntülemek için, metin koordinatlarını verilen formüllere göre hesaplamanız gerekir.

Ben de aşağı yukarı böyle düşünmüştüm ama daha basit bir çözüm olduğunu düşündüm.

Teşekkürler!