Errori, bug, domande - pagina 1355

 
Ilyas:

Nel prossimo futuro, se una dichiarazione di conversione appropriata è sovraccaricata in una classe, sarà chiamata.

Mmmm, yummy ) molto buona notizia
 
Onestamente non ho visto nulla di sbagliato in questa conversione, dato che è esplicita. Perché dovrebbe esserci un errore qui? Se qualcuno vuole un valore numerico per un descrittore, non c'è nessun errore.
 
Ilyas:
Ma non ha senso convertire un descrittore in un numero o viceversa, e questo è molto probabilmente un bug nel codice.
Ho frammenti di codice in cui i puntatori sono esplicitamente convertiti in numeri (per l'interfacciamento con sistemi esterni di scrittura/lettura, così come per l'analisi degli errori e il debug), se questo è vietato allora la flessibilità sarà ridotta e dovremo rifare.
 
Ilyas:
Naturalmente, in termini di "come viene immagazzinato nella memoria", hai ragione.
Ma non ha senso convertire il descrittore in un numero o viceversa, ed è molto probabilmente un bug nel codice.
Nel prossimo futuro, se un operatore di conversione appropriato è sovraccaricato in una classe, sarà chiamato.
Potrebbe esserci un avvertimento qui, ma non un errore.
 
Ilyas:
Naturalmente, in termini di "come viene immagazzinato nella memoria", hai ragione.
Ma non ha senso ridurre il descrittore a un numero o viceversa, ed è molto probabilmente un bug nel codice.
Nel prossimo futuro, se un operatore di conversione appropriato è sovraccaricato nella classe, sarà chiamato.

Naturalmente, è stato un mio errore di disattenzione, l'ho già scritto. Ho il 95% degli errori a tutti, non errori di sistema, ma a causa di disattenzione )) A proposito, non vedo nemmeno il senso di lanciare un descrittore su un numero. È più interessante con i puntatori dove c'è l'aritmetica dei puntatori, per esempio, si può decomporre il doppio in byte o fare qualcosa di non banale. E un descrittore è solo un identificatore interno, dato dal sistema runtime di MT4, non ci si può fare nulla.

Ecco come si è verificato questo errore, non c'è bisogno di scrivere codice di notte ))

// order - это дескриптор экземпляра класса, создается вот так после открытия ордера, потом заносится в CList открытых ордеров.
// COrder* order = new COrder(ticket, symbol, cmd, volume, price, timeOpen, magic, stoploss, takeprofit, comment, expiration);

// так было неправильно, просто я перепутал order с тикетом, забыл, что это же экземпляр класса, уставший был ))
logBuf[logBufCount++] = double(order);

// так правильно
logBuf[logBufCount++] = (double)order.Ticket
 
A100:
Un descrittore è ancora un numero concreto. Solo perché non punta a una particolare sezione di memoria, non lo priva delle proprietà del numero.

Allora la stringa è anche un insieme di numeri specifici. E un'immagine è anche un numero e un impulso elettrico su un chip...

In generale, studiare ingegneria elettrica, collega.

 
Alexey Navoykov:
Ad essere onesti, non ho visto nulla di sbagliato in questa citazione, considerando che è esplicita. Perché dovrebbe esserci un errore qui? ...

Perché il controllo del tipo è violato, e l'ambiente gestito, che è la macchina virtuale MQL, dovrebbe impedire queste cose:

MQL != C++

 
Ilyas:
Naturalmente, in termini di "come viene immagazzinato nella memoria", hai ragione.
Ma non ha senso convertire il descrittore in un numero o viceversa, e molto probabilmente è un bug nel codice.
Nel prossimo futuro, se l'operatore di conversione appropriato è sovraccaricato in una classe, sarà chiamato.
Molto bello e soprattutto ideologicamente corretto. Due mani a favore!
 
Alexey Volchanskiy:

A proposito, non vedo nemmeno il senso di ridurre il descrittore a un numero qualsiasi...

Esiste un tale punto. Questa è una proprietà molto utile per contenitori di dati specifici, come i dizionari, dove il descrittore, per definizione unico, può essere la chiave di una classe. In questo caso non ci sarà bisogno di calcolare il suo hash e, soprattutto, potrete distinguere l'unicità degli oggetti per riferimento e per valore (che in realtà sono concetti diversi). Inoltre, le classi che non sono legate l'una all'altra per eredità possono essere messe nella collezione.
 
Alexey Volchanskiy:

E il descrittore è solo un qualche identificatore interno dato dal sistema runtime di MT4, non ci si può fare nulla.

Altri lo fanno. Aprire nuovi orizzonti.