
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
L'autore dell'articolo è molto grato per la presentazione così accessibile di informazioni sull'interoperabilità IPC senza dll per biciclette.
Lavorare con la memoria mi sembra piuttosto complicato, ma l'approccio è chiaro, tranne che per alcune domande, che spero le persone competenti aiuteranno a capire:
1. Con l'aiuto di memcpy copiamo una variabile short a due byte nell'array uchar[2], come vengono inserite le informazioni nell'array stesso?
In che formato saranno i valori agli indici 0 e 1 dell'array uchar?
Il valore viene diviso byte per byte e scritto nell'array, ok... Credo di aver capito.
Non riesco a capire quali valori rientrano in questo array e come ottenere il valore originale da essi, il problema non è che non posso visualizzare questi valori sullo schermo.
2. Come riempire correttamente l'array uchar[4] con valori di tipo diverso durante la copia di memcpy, per esempio:
Sembra che la risposta sia banale e che tutto sia fatto in modo semplice, ma come scriverlo correttamente?
Avete provato astampare?
Il quarto esempio dà errore: 'operator=' - illegal operation use 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; // <----- Ошибка
}
Capisco l'idea della sezione di memoria, ma forse le definizioni non sono corrette?
Potete dirmi qual è il motivo?
Grazie in anticipo.L'idea di una posizione di memoria è chiara, ma forse c'è qualcosa di sbagliato nelle definizioni?
Qual è il motivo?
Le strutture di tipo diverso non possono più essere copiate, MQL ha eliminato questa possibilità.
utilizzare l'unione
uchar è sbagliato e anche double è presente in modo sospetto.
E comunque src dovrebbe specificare cosa gli appartiene esattamente e cosa gli verrà passato.
Qualcuno ti ha già corretto come hai suggerito. Bene. Pensate. Buona fortuna.
funzionerà per mql4 oggi?
I linguaggi (MQL4 / MQL5) sono completamente uguali - la differenza è in 2-3 funzioni mancanti in MQL4(ArrayPrint e qualcos'altro di piccolo) e in "nuove caratteristiche" per MQL5 - database, DirectX e OpenCL.
Ma l'articolo è stato scritto 8 anni fa, ora MQL è diventato un linguaggio strettamente tipizzato e per assegnare 2 strutture (esempio nell'articolo) è necessario scrivere un costruttore di copia o serializzare la struttura in un array di byte e poi di nuovo.
L'assegnazione di strutture di tipo diverso non funziona più(la conversionedei parametri non è consentita - ci si aspetta una variabile dello stesso tipo).
Ma sarebbe possibile lavorare con le unioni: