Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Makalenin yazarı,bisiklet dll'leri olmadan IPC birlikte çalışabilirliği hakkında bu kadar erişilebilir bir bilgi sunumu için çok minnettar.
Bellekle çalışmak bana oldukça karmaşık görünüyor, ancak bazı sorular dışında yaklaşım açık, umarım bilgili insanlar anlamaya yardımcı olur:
1. Memcpy yardımıyla iki baytlık bir short değişkenini uchar[2] dizisine kopyalıyoruz, bilgi dizinin içine nasıl yerleştirilir?
uchar dizisinin 0 ve 1 indeksindeki değerler hangi formatta olacaktır?
Değer bayt bayt bölünüyor ve diziye yazılıyor, tamam ... Sanırım burayı anladım.
Bu diziye hangi değerlerin düştüğünü ve bunlardan orijinal değeri nasıl alacağımı anlayamıyorum, soru bu değerleri ekranda görüntüleyememem değil.
2. Örneğin memcpy kopyalarken uchar[4] dizisini farklı tipteki değerlerle nasıl düzgün bir şekilde doldurabilirim:
Cevap önemsiz gibi geliyor ve her şey basitçe yapılıyor, ama nasıl doğru bir şekilde yazılır?
Print'i denediniz mi?
Dördüncü örnek hata verir: 'operator=' - yasadışı işlem kullanımı SAMPLE_04.mq4 34 7
#property copyright ""
#property link ""
#property version ""
#property strict
//Пример 4. Копирование структур средствами MQL5
//---
struct str1
{
double d; // 8 байт
long l; // 8 байт
int i[3]; // 3 * 4 = 12 байт
};
//---
struct str2
{
uchar c[ 8 + 8 + 12 ]; // размер структуры str1
};
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart(){
str1 src; //
src.d = -1; //
src.l = 20; //
//--- заполняем параметры структуры
ArrayInitialize(src.i, 0);
str2 dst; //
//--- превратили структуру в байтовый массив
dst = src; // <----- Ошибка
}
Bellek bölümü hakkındaki fikri anlıyorum, ancak belki de tanımlar tam olarak doğru değildir?
Bana sebebinin ne olduğunu söyleyebilir misiniz?
Şimdiden teşekkürler.Bellek konumu fikri açık, ancak belki de tanımlarda yanlış bir şey var?
Bunun nedeni nedir?
Farklı türlerdeki yapılar artık kopyalanamaz, MQL bu olasılığı kaldırmıştır.
union kullanın
uchar bu arada yanlıştır ve orada double da şüpheli bir şekilde mevcuttur.
Ve bu arada src tam olarak neye ait olduğunu ve geçirileceğini belirtmelidir.
Birisi zaten sizi önerdiğiniz gibi düzeltti. Güzel. Düşün. İyi şanslar.
bugün mql4 i̇çi̇n çalişacak mi?
Diller (MQL4 / MQL5) şu anda tamamen aynı - fark MQL4'te eksik olan 2-3 işlev(ArrayPrint ve başka küçük bir şey) ve MQL5 için "yeni özellikler" - veritabanı, DirectX ve OpenCL.
ancak makale 8 yıl önce yazıldı, şimdi MQL katı tipli bir dil haline geldi ve 2 yapı atamak için (makaledeki örnek) bir kopya yapıcı yazmanız veya yapıyı bir bayt dizisine serileştirmeniz ve sonra tekrar geri dönmeniz gerekiyor.
Farklı tipteki yapıları atamak artık çalışmıyor(parametre dönüşümüne izin verilmiyor - aynı tipte değişken bekleniyor).
Ancak birlikler ile çalışmak mümkün olabilir: