[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 311

 
chief2000:

- È possibile scoprire il numero di elementi di un array in un file? Come evitare azioni inutili in questo caso in generale?


FileSize(handle) diviso per la dimensione dell'elemento = numero di elementi?
 
Figar0:

FileSize(handle) diviso per la dimensione dell'elemento = numero di elementi?

È una supposizione?

Come si fa a sapere la dimensione di un elemento in un file binario? Forse una parte di essa è occupata da più elementi?

 
chief2000:

Se si imposta un conteggio troppo alto, si ottengono molti valori nulli (giusto?)

La documentazione sembra dire

Функция возвращает количество фактически прочитанных элементов.
 
chief2000:

È una supposizione?

Come si fa a sapere la dimensione di un elemento in un file binario? Forse una parte di essa è occupata da più elementi?


La dimensione di un elemento dipende da quello che ci scrivi, o 4 o 8. Com'è il tuo processo di scrittura?
 
Roger:

La documentazione sembra dire

Se un file ha 1000 elementi e count=20, ne leggerà effettivamente 20.

Ma cosa succede se count=5000?

Non è chiaro cosa intendano con "Prima di leggere i dati l'array deve essere di dimensioni sufficienti" - sarebbe più facile leggere tutti gli elementi nell'array per numero di elementi, e poi se necessario si può troncare l'array, ecc.

 
Figar0:

La dimensione dell'oggetto dipende da quello che ci scrivi, o 4 o 8. Com'è il tuo processo di scrittura?

Io uso (scrivere e leggere sono due passi indipendenti):

 FileWriteArray( int handle, object array[], int start, int count) 
 
chief2000:

Io uso (scrivere e leggere sono due passi indipendenti):


int FileWriteArray( int handle, oggetto array[], int start, int count)

La funzione scrive l'array in un file binario. Array come int, bool, datetime e color sono scritti come 4 byte interi. Gli array di tipo double sono scritti come numeri in virgola mobile. 8 byte numeri in virgola mobile.

Ho delineato ciò che dovete sapere. Se un array di doppi è stato scritto nel file, allora dividendo la dimensione del file per 8 si ottiene il numero di elementi dell'array nel file.

 
Figar0:

int FileWriteArray( int handle, oggetto array[], int start, int count)

La funzione scrive l'array in un file binario. Array come int, bool, datetime e color sono scritti elemento per elemento come 4 byte interi. Gli array di tipo double sono scritti come numeri in virgola mobile. 8 byte numeri in virgola mobile.

Ho evidenziato ciò che dovete sapere. Se un array doppio è stato scritto in un file, allora dividendo la dimensione del file per 8 si ottiene il numero di elementi dell'array nel file.

Ora ha aperto un file salvato in un visualizzatore di testo - ecco come appare:

Sembra che abbia circa 50 elementi (dovrebbero essercene altrettanti), ma la sua dimensione è di 2432 byte. A quanto pare, vi si immagazzinano "spazi vuoti".

 
Ciao a tutti. Si prega di avvisare. Come posso usare MQL4 in un indicatore in una finestra separata per disegnare l'istogramma non da zero, ma da valori specificati. Voglio che l'indicatore Ishimoku disegni i valori per altri timeframe in una finestra separata.
 
chief2000: A quanto pare, memorizza il "vuoto" al suo interno.
Immagazzina quello che ci metti dentro) Non ci sono miracoli.