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.
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 è necessario assegnare una dimensione all'array prima della lettura. Se non è il primo dato che è necessario, allora è necessario calcolare la dimensione in byte e spostare la posizione iniziale per la lettura della giusta quantità.
Alexey Viktorov: 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
FileWriteInteger(h,s1,INT_VALUE); //ножно ли перед записью записывать размера массива? s1=FileReadInteger(h,INT_VALUE); //ножно ли перед восстановлением считываем размер массива?
FileWriteInteger(h,s1,INT_VALUE); //ножно ли перед записью записывать размера массива? 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.
o semplicemente scansionare ogni nuova linea in byte
Короче при записи начал суммировать вторичный массив в байтах, каждая запись плюсуется с предыдущей file_size=+FileSize(handle); // чтобы выяснить индекс от которого открывать
O semplicemente riassumendo ogni nuova linea in byte
Короче при записи начал суммировать вторичный массив в байтах, каждая запись плюсуется с предыдущей file_size=+FileSize(handle); // чтобы выяснить индекс от которого открывать
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.
Ho finito per dividere per 8000 in modo che i valori dell'array entrassero nei loro indici.
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.