Top2n: Cos'è un zzzzzzzz? I conti non tornano, non puoi prendertela comoda?
Per favore, usa il tuo cervello solo un po'. Posso solo consigliarvi, non farlo per voi. Quali sono i tuoi dati, qual è la dimensione dell'array... Non voglio ricordare tutto questo e condurvi alla vittoria.
Получается, что если массив динамический, то формула /16, не совсем подходит, хотя второе же измерение фиксировано, к там уже -
Выходит, что вторичный массив записывается на первичный, возможно перед записью что то сделать нужно FileSeek(handle,0,SEEK_END); Люди записывают переменные в массив, возможно поможет? типо такого
int dataArraySize = ArraySize(dataArray); //записываем в переменную размер массива int fileHandle = FileOpen("filename.dat", FILE_BIN | FILE_WRITE); // открываем файл на запись в бинарном режиме. FileWriteInteger(fileHandle, dataArraySize);//записываем в файл размер массива FileWriteDouble(fileHandle, dataArraySize);//записываем в файл все элементы массива
Il codice della linea che completa il file bin con una nuova barra
if(count==size) { // ArrayResize(arrS,coun); for(int q=0; q<ARRAY_SIZE_X; q++) // Перебор по периоду, колонка X { arrS[q]=sm.d[q].m[rates_total-1]; // M(I) SMA coun++; } ResetLastError(); int handle=FileOpen(path,FILE_WRITE|FILE_BIN); if(handle!=INVALID_HANDLE) { //--- запишем данные массива в конец файла FileSeek(handle,0,SEEK_SET); FileWriteArray(handle,arrS); Print("arrS = ",arrS[0]," arrS = ",arrS[1]," arrS = ",arrS[3]); //--- закрываем файл FileClose(handle); } else Print("Failed to open the file, error ",GetLastError()); count=1; }
Получается, что если массив динамический, то формула /16, не совсем подходит, хотя второе же измерение фиксировано, к там уже -
Выходит, что вторичный массив записывается на первичный, возможно перед записью что то сделать нужно FileSeek(handle,0,SEEK_END); Люди записывают переменные в массив, возможно поможет? типо такого
int dataArraySize = ArraySize(dataArray); //записываем в переменную размер массива int fileHandle = FileOpen("filename.dat", FILE_BIN | FILE_WRITE); // открываем файл на запись в бинарном режиме. FileWriteInteger(fileHandle, dataArraySize);//записываем в файл размер массива FileWriteDouble(fileHandle, dataArraySize);//записываем в файл все элементы массива
Il codice della linea che completa il file bin con una nuova barra
if(count==size) { // ArrayResize(arrS,coun); for(int q=0; q<ARRAY_SIZE_X; q++) // Перебор по периоду, колонка X { arrS[q]=sm.d[q].m[rates_total-1]; // M(I) SMA coun++; } ResetLastError(); int handle=FileOpen(path,FILE_WRITE|FILE_BIN); if(handle!=INVALID_HANDLE) { //--- запишем данные массива в конец файла FileSeek(handle,0,SEEK_SET); FileWriteArray(handle,arrS); Print("arrS = ",arrS[0]," arrS = ",arrS[1]," arrS = ",arrS[3]); //--- закрываем файл FileClose(handle); } else Print("Failed to open the file, error ",GetLastError()); count=1; }
Non ricordo dove l'ho letto, ma se si apre un file solo per scrivere, tutto quello che c'è dentro viene cancellato.
int handle=FileOpen(path,FILE_WRITE|FILE_BIN);
Il file deve essere aperto per la lettura e la scrittura
int handle = FileOpen(path, FILE_READ|FILE_WRITE|FILE_BIN);
Se apriamo il file solo per la lettura, allora il flag di scrittura può essere specificato e anche meglio non esserlo.
Se scrivo nuovi dati all'inizio, scrive all'inizio completo, c'è un modo per aumentare la dimensione dell'inizio))
Voglio dire, si limita a scrivere all'inizio o continua a salvare solo fino alla fine?
FileSeek(handle,0,SEEK_SET);
E se salvo fino alla fine, e continuo ad aggiungere fino alla fine, come faccio a leggere dalla fine alla quantità giusta? O meglio, come catturare dal file bin il chunk giusto daN alla fine?
O l'ho fatto con i comandi sbagliati?
Salvo due matrici alla fine - come ho capito aumentando correttamente il peso del bidone.
Poi provo a trasferire i dati all'array con il compito di catturare l'ultimo record, il file bin è più grande dell'array.
ResetLastError(); int file_handle=FileOpen(path,FILE_READ|FILE_BIN); if(file_handle!=INVALID_HANDLE) { //--- прочитаем все данные из файла в массив //file_siz=FileSize(file_handle)/8000; //FileSeek(file_handle,file_size,SEEK_END); FileReadArray(file_handle,arr); //--- получим размер массива int siz=ArraySize(arr); //--- распечатаем данные из массива Print("arr = ",arr[1][3]," Bid = ",arr[1][2]," Ask = ",arr[0][3]); Print("file_siza = ",file_siz); //--- закрываем файл FileClose(file_handle);
FileSeek(file_handle,file_size,SEEK_SET); что делает - определяет положение массива или в бине?
Se leggo la sezione richiesta dal file binario con
FileReadArray(file_handle,arr,0,WHOLE_ARRAY);
L'algoritmo elabora l'array stesso, le celle mancanti sono tradotte in modo simile alla posizione nel contenitore, che a sua volta dà l'intervallo richiesto nel limite della stessa posizione del contenitore, solo con degli zeri.
Se leggo la sezione richiesta dal file binario con
FileReadArray(file_handle,arr,0,WHOLE_ARRAY);
L'algoritmo elabora l'array stesso, le celle mancanti sono tradotte in modo simile alla posizione binaria, che a sua volta dà l'intervallo richiesto nel limite della stessa posizione come nel binario, solo con zeri.
come risultato, ho diviso per 8000, in modo che i valori dell'array rientrino nei loro indici
Dimmi tu...
FileSize
Restituisce la dimensione del file in byte.
Tipo
Dimensione in byte
Valore minimo positivo
Valore massimo
Analogico in C++
float
4
1.175494351e-38
3.402823466e+38
float
doppio
8
2.2250738585072014e-308
1.7976931348623158e+308
doppio
dimensione del file in byte, la dimensione occupata dal tipo double in byte, ed è necessario dividerla per zhzhezhezhezhezhezhezhez
Dimmi tu...
Tipo
Dimensione in byte
Valore minimo positivo
Valore massimo
Analogico in C++
float
4
1.175494351e-38
3.402823466e+38
float
doppio
8
2.2250738585072014e-308
1.7976931348623158e+308
doppio
dimensione del file in byte, la dimensione occupata dal tipo double in byte, ed è obbligatorio dividere per zhzhezhezhezhezhezhezhezhezhez
Cos'è un zzzzzzzz? I conti non tornano, non puoi prendertela comoda?
Получается, что если массив динамический, то формула /16, не совсем подходит, хотя второе же измерение фиксировано, к там уже -
FileSeek(handle,0,SEEK_END);
Люди записывают переменные в массив, возможно поможет? типо такого
int dataArraySize = ArraySize(dataArray); //записываем в переменную размер массива
int fileHandle = FileOpen("filename.dat", FILE_BIN | FILE_WRITE); // открываем файл на запись в бинарном режиме.
FileWriteInteger(fileHandle, dataArraySize);//записываем в файл размер массива
FileWriteDouble(fileHandle, dataArraySize);//записываем в файл все элементы массива
Il codice della linea che completa il file bin con una nuova barra
{
// ArrayResize(arrS,coun);
for(int q=0; q<ARRAY_SIZE_X; q++) // Перебор по периоду, колонка X
{
arrS[q]=sm.d[q].m[rates_total-1]; // M(I) SMA
coun++;
}
ResetLastError();
int handle=FileOpen(path,FILE_WRITE|FILE_BIN);
if(handle!=INVALID_HANDLE)
{
//--- запишем данные массива в конец файла
FileSeek(handle,0,SEEK_SET);
FileWriteArray(handle,arrS);
Print("arrS = ",arrS[0]," arrS = ",arrS[1]," arrS = ",arrS[3]);
//--- закрываем файл
FileClose(handle);
}
else
Print("Failed to open the file, error ",GetLastError());
count=1;
}
Получается, что если массив динамический, то формула /16, не совсем подходит, хотя второе же измерение фиксировано, к там уже -
FileSeek(handle,0,SEEK_END);
Люди записывают переменные в массив, возможно поможет? типо такого
int dataArraySize = ArraySize(dataArray); //записываем в переменную размер массива
int fileHandle = FileOpen("filename.dat", FILE_BIN | FILE_WRITE); // открываем файл на запись в бинарном режиме.
FileWriteInteger(fileHandle, dataArraySize);//записываем в файл размер массива
FileWriteDouble(fileHandle, dataArraySize);//записываем в файл все элементы массива
Il codice della linea che completa il file bin con una nuova barra
{
// ArrayResize(arrS,coun);
for(int q=0; q<ARRAY_SIZE_X; q++) // Перебор по периоду, колонка X
{
arrS[q]=sm.d[q].m[rates_total-1]; // M(I) SMA
coun++;
}
ResetLastError();
int handle=FileOpen(path,FILE_WRITE|FILE_BIN);
if(handle!=INVALID_HANDLE)
{
//--- запишем данные массива в конец файла
FileSeek(handle,0,SEEK_SET);
FileWriteArray(handle,arrS);
Print("arrS = ",arrS[0]," arrS = ",arrS[1]," arrS = ",arrS[3]);
//--- закрываем файл
FileClose(handle);
}
else
Print("Failed to open the file, error ",GetLastError());
count=1;
}
Non ricordo dove l'ho letto, ma se si apre un file solo per scrivere, tutto quello che c'è dentro viene cancellato.
Il file deve essere aperto per la lettura e la scrittura
Non ricordo dove l'ho letto, ma se un file viene aperto solo per la scrittura, tutto quello che c'è dentro viene cancellato.
Il file deve essere aperto per la lettura e la scrittura
Pensavo che fosse tutto qui.
Se scrivo nuovi dati all'inizio, scrive all'inizio completo, c'è un modo per aumentare la dimensione dell'inizio))
Voglio dire, si limita a scrivere all'inizio o continua a salvare solo fino alla fine?
E se salvo fino alla fine, e continuo ad aggiungere fino alla fine, come faccio a leggere dalla fine alla quantità giusta? O meglio, come catturare dal file bin il chunk giusto daN alla fine?
O l'ho fatto con i comandi sbagliati?
Salvo due matrici alla fine - come ho capito aumentando correttamente il peso del bidone.
Poi provo a trasferire i dati all'array con il compito di catturare l'ultimo record, il file bin è più grande dell'array.
int file_handle=FileOpen(path,FILE_READ|FILE_BIN);
if(file_handle!=INVALID_HANDLE)
{
//--- прочитаем все данные из файла в массив
//file_siz=FileSize(file_handle)/8000;
//FileSeek(file_handle,file_size,SEEK_END);
FileReadArray(file_handle,arr);
//--- получим размер массива
int siz=ArraySize(arr);
//--- распечатаем данные из массива
Print("arr = ",arr[1][3]," Bid = ",arr[1][2]," Ask = ",arr[0][3]);
Print("file_siza = ",file_siz);
//--- закрываем файл
FileClose(file_handle);
Se leggo la sezione richiesta dal file binario con
L'algoritmo elabora l'array stesso, le celle mancanti sono tradotte in modo simile alla posizione nel contenitore, che a sua volta dà l'intervallo richiesto nel limite della stessa posizione del contenitore, solo con degli zeri.
Se leggo la sezione richiesta dal file binario con
L'algoritmo elabora l'array stesso, le celle mancanti sono tradotte in modo simile alla posizione binaria, che a sua volta dà l'intervallo richiesto nel limite della stessa posizione come nel binario, solo con zeri.
Non capisco cosa può andare storto...
Basta aprire il file per la lettura.
sposta il puntatore al giusto numero di byte nella giusta direzione
// В данном случае от конца файла на 32 байта
32 byte sono 8 valori interi o 4 valori in virgola mobile.
Se l'array è bidimensionale, questo significa che ci spostiamo di 4 righe se l'array è di tipo int, o di 2 righe se l'array è di tipo double
Poi, leggiamo i valori nell'array dichiarato in precedenza come dinamico arr[][2]; questo è un array bidimensionale.
ECCO!!!
Successivamente, determinare la dimensione dell'array
e poi stampare i valori.
int i, z;
for(i = 0; i < size; i++)
{for(z = 0; z < 2; z++)
{
Print("arr[", i, "][", z, "]", arr[i][z]);
}
}
Non capisco cosa possa andare storto...
Grazie a te! Ha funzionato)))