Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 1118
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
Si prega di avvisare sui possibili sviluppi.
Ho un array[100], inoltre ho salvato un file binario di dimensioni [1000], come restituire l'array del file binario degli ultimi 100 valori. C'è qualcosa di universale? Ci ho lavorato ancora per 12 ore e niente.
Si prega di avvisare sui possibili sviluppi.
Ho un array[100], inoltre ho salvato un file binario di dimensioni [1000], come restituire l'array del file binario degli ultimi 100 valori. C'è qualcosa di universale? Ci sto lavorando da 12 ore e niente.
Se ricordo bene, era scritto in mql4, che se count = WHOLE_ARRAY o il valore supera il numero di elementi dell'array, allora l'intero array viene scritto alla fine. E non parlava di alcun margine. Cioè è fuori questione non menzionare 1.000.
Per controllarlo, contate quanti valori vengono scritti e la dimensione del file.
Se ricordo bene, era scritto in mql4, che se count = WHOLE_ARRAY o il valore supera il numero di elementi dell'array, l'intero array viene scritto alla fine. E non parlava di alcun margine. Quindi può essere assolutamente fuori questione se non c'è un margine di 1000 mila punti.
Per verificarlo, calcolate quanti valori vengono scritti e la dimensione del file risultante.
Non voglio dire che dopo aver scritto l'array nel binario, appaiono nuovi dati, e continuo a scriverli nel binario tramite un nuovo array dimensionato (= la dimensione della colonna dell'array primario), ogni volta fino alla fine del file, per una nuova colonna j
allora abbiamo bisogno di rimuovere i dati dal binario pari in numero all'indice dell'array originale, che è stato trasferito al binario nella prima integrazione. Tuttavia, gli ultimi dati saranno inclusi in questo array limitato, perché il binario è più grande dell'array primario, dato che sono state aggiunte righe secondarie. Le righe secondarie devono andare nell'array di lettura, e le prime righe in binario devono essere fuori dall'area.
Non voglio dire che dopo aver scritto l'array nel binario, appaiono nuovi dati dopo un momento, e continuo a scriverli nel binario tramite un nuovo array dimensionato (= dimensione della colonna dell'array primario), ogni volta fino alla fine del file, per una nuova colonna j
allora abbiamo bisogno di rimuovere i dati dal binario pari in numero all'indice dell'array originale, che è stato trasferito al binario nella prima integrazione. Tuttavia, gli ultimi dati devono essere rimossi in modo tale che gli ultimi dati siano inclusi in questo array limitato, perché il binario è più grande dell'array primario a causa dell'aggiunta delle righe secondarie.
Allora non c'è bisogno di assegnare una dimensione all'array prima della lettura. Se non è il primo dato che è necessario, allora calcola la dimensione in byte e sposta la posizione iniziale per la lettura della giusta quantità.
Questa è la domanda come calcolare i byte
s1=FileReadInteger(h,INT_VALUE); //ножно ли перед восстановлением считываем размер массива?
может как то через это sizeof
Questa è la domanda come calcolare i byte
s1=FileReadInteger(h,INT_VALUE); //ножно ли перед восстановлением считываем размер массива?
может как то через это sizeof
Se i dati sono di tipo doppio, allora dividete la dimensione del file per il numero di byte occupati dal numero di tipo doppio, cioè per 8.
Se i dati sono doppi, allora dividete la dimensione del file per il numero di byte occupati dal numero doppio, cioè per 8.
È diFileFindFirst?
o semplicemente scansionare ogni nuova linea in byte
file_size=+FileSize(handle); // чтобы выяснить индекс от которого открывать
FileReadArray(file_handle,arr,file_size,WHOLE_ARRAY);
ConFileFindFirst?
AttraversoFileFindFirst?
O semplicemente riassumendo ogni nuova linea in byte
file_size=+FileSize(handle); // чтобы выяснить индекс от которого открывать
FileReadArray(file_handle,arr,file_size,WHOLE_ARRAY);
Non avresti dovuto correggere il tuo post dopo aver risposto...
Sbagliato. Prima di leggere una matrice, definite la sua dimensione file_size = FileSize(handle); e dividete per la memoria occupata dal tipo di dati, cioè per il doppio per 8. Si ottiene il numero di numeri nel file. Se l'array è bidimensionale, allora il numero di record nel file sarà due volte inferiore. E si ottiene quanti byte devono essere spostati per leggere dalla linea desiderata.
Avresti dovuto correggere il tuo post dopo aver risposto...
Sbagliato. Prima di leggere una matrice, definite la sua dimensione file_size = FileSize(handle); e dividete per la memoria occupata dal tipo di dati, cioè per il doppio per 8. Si ottiene il numero di numeri nel file. Se l'array è bidimensionale, allora il numero di record nel file sarà due volte inferiore. E si ottiene quanti byte devono essere spostati per leggere dalla linea desiderata.