Di seguito è la mia opinione soggettiva, se mi sbaglio da qualche parte, sarei felice di aiutare.
StringLen funzionava O(n) fino al primo carattere NULL (0x0000) nella stringa, ora funziona O(1). Lalunghezza delle stringhe poteva sempre essere troncata tramite StringSetCharacter(str, pos, 0x00), ma hanno introdotto StringSetLength per qualche motivo.
Molto probabilmente, l'analizzatore ha risolto il compito di accelerare il codice quando si lavora con le stringhe. Il compito di velocizzare il codice è stato risolto e a nessuno importa che metà della funzione ora gestisce i caratteri NULL nella stringa e l'altra metà no.
Di seguito è la mia opinione soggettiva, se mi sbaglio da qualche parte, sarei felice di aiutare.
StringLen lavorava O(n) fino al primo carattere NULL (0x0000) nella stringa, ma ora funziona O(1). Lalunghezza delle stringhe poteva sempre essere troncata tramite StringSetCharacter(str, pos, 0x00), ma hanno introdotto StringSetLength per qualche motivo.
Molto probabilmente, l'analizzatore ha risolto il compito di accelerare il codice quando si lavora con le stringhe. Il compito di velocizzare il codice è stato risolto e a nessuno importa che metà della funzione ora gestisce i caratteri NULL nella stringa e l'altra metà no.
Il risultato:
Per favore, trattenete le vostre emozioni.
La prossima volta che usi un linguaggio scurrile, dovrai essere bandito - non siamo in un pub. E non è più di moda imprecare in un pub.
Sergey Dzyublik: Agli sviluppatori: Si prega di aggiungere la possibilità di specificare la generazione forzata di codice per l'operatore di assegnazione predefinito (costruttore di copia):
È un po' complicato. È più facile usare l'analogia con il costruttore di default:
1) qualsiasi operatore di assegnazione sovrascrive l'operatore di assegnazione predefinito
2) qualsiasi operatore di copia sovrascrive l'operatore di copia predefinito
A100: Solo errori parzialmente corretti ... perché no!?
Poiché MQL non ha un'idea coerente quando si tratta di stringhe con caratteri NULL, questo è il problema. Per esempio, StringToShortArray supporta i caratteri NULL in una stringa mentre la funzione inversa ShortArrayToString non lo fa...
Di conseguenza, si spende più tempo a catturare i bug e a cercare soluzioni piuttosto che a risolvere compiti particolari.
È un po' complicato. È più facile usare l'analogia con il costruttore di default:
1) qualsiasi operatore di assegnazione sovrascrive l'operatore di assegnazione predefinito
2) qualsiasi operatore di copia annulla l'operatore di copia predefinito
Non ho bisogno di annullare; ho bisogno, al contrario, di una generazione forzata. MQL non ha funzionalità per la copia profonda di tipi complessi, e nell'operatore di assegnazione e nel costruttore di copia sono implementati di default.
Poiché non c'è un'idea coerente in MQL quando si tratta di stringhe con caratteri NULL, questo è il problema. Per esempio, StringToShortArray supporta i caratteri NULL in una stringa, mentre la sua funzione inversa ShortArrayToString non lo fa...
Da un lato sì, dall'altro è esplicitamente dichiarato nella Documentazione: "o fino a quando il terminale 0 è soddisfatto".
Количество элементов массива для копирования. Определяет длину результатной строки. По умолчанию -1, что означает копирование до конца массива, либо до встречи терминального 0.
Tuttavia, questo non gli impedisce di gestire adeguatamente i caratteri NULL nella stringa.
Potrebbe approfondire questo punto?
Di seguito è la mia opinione soggettiva, se mi sbaglio da qualche parte, sarei felice di aiutare.
StringLen funzionava O(n) fino al primo carattere NULL (0x0000) nella stringa, ora funziona O(1).
Lalunghezza delle stringhe poteva sempre essere troncata tramite StringSetCharacter(str, pos, 0x00), ma hanno introdotto StringSetLength per qualche motivo.
Molto probabilmente, l'analizzatore ha risolto il compito di accelerare il codice quando si lavora con le stringhe.
Il compito di velocizzare il codice è stato risolto e a nessuno importa che metà della funzione ora gestisce i caratteri NULL nella stringa e l'altra metà no.
Il risultato:
Di seguito è la mia opinione soggettiva, se mi sbaglio da qualche parte, sarei felice di aiutare.
StringLen lavorava O(n) fino al primo carattere NULL (0x0000) nella stringa, ma ora funziona O(1).
Lalunghezza delle stringhe poteva sempre essere troncata tramite StringSetCharacter(str, pos, 0x00), ma hanno introdotto StringSetLength per qualche motivo.
Molto probabilmente, l'analizzatore ha risolto il compito di accelerare il codice quando si lavora con le stringhe.
Il compito di velocizzare il codice è stato risolto e a nessuno importa che metà della funzione ora gestisce i caratteri NULL nella stringa e l'altra metà no.
Il risultato:
StringLen lavorava O(n) fino al primo carattere NULL (0x0000) nella stringa, ora funziona O(1)
Agli sviluppatori:
Si prega di aggiungere la possibilità di specificare la generazione forzata di codice per l'operatore di assegnazione predefinito (costruttore di copia):
È un po' complicato. È più facile usare l'analogia con il costruttore di default:
1) qualsiasi operatore di assegnazione sovrascrive l'operatore di assegnazione predefinito
2) qualsiasi operatore di copia sovrascrive l'operatore di copia predefinito
Solo errori parzialmente corretti ... perché no!?
Poiché MQL non ha un'idea coerente quando si tratta di stringhe con caratteri NULL, questo è il problema.
Per esempio, StringToShortArray supporta i caratteri NULL in una stringa mentre la funzione inversa ShortArrayToString non lo fa...
Di conseguenza, si spende più tempo a catturare i bug e a cercare soluzioni piuttosto che a risolvere compiti particolari.
È un po' complicato. È più facile usare l'analogia con il costruttore di default:
1) qualsiasi operatore di assegnazione sovrascrive l'operatore di assegnazione predefinito
2) qualsiasi operatore di copia annulla l'operatore di copia predefinito
Non ho bisogno di annullare; ho bisogno, al contrario, di una generazione forzata.
MQL non ha funzionalità per la copia profonda di tipi complessi, e nell'operatore di assegnazione e nel costruttore di copia sono implementati di default.
Poiché non c'è un'idea coerente in MQL quando si tratta di stringhe con caratteri NULL, questo è il problema.
Per esempio, StringToShortArray supporta i caratteri NULL in una stringa, mentre la sua funzione inversa ShortArrayToString non lo fa...
Da un lato sì, dall'altro è esplicitamente dichiarato nella Documentazione: "o fino a quando il terminale 0 è soddisfatto".
Da un lato sì, dall'altro è esplicitamente dichiarato nella Documentazione(che non lo fa)
EStringToShortArray dice la stessa cosa:
Tuttavia, questo non gli impedisce di gestire adeguatamente i caratteri NULL nella stringa.