포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 1119

 
Top2n :
결국 배열 값이 인덱스에 있도록 8000으로 나눕니다.

당신이 가장 잘 알고...

파일 크기

파일 크기 를 바이트 단위로 반환합니다.

유형

크기(바이트)

최소 양수 값

최대값

C++의 아날로그

뜨다

4

1.175494351e-38

3.402823466e+38

뜨다

더블

여덟

2.2250738585072014e-308

1.7976931348623158e+308

더블


파일의 크기(바이트), 이중 유형 이 차지하는 크기(바이트), zhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzh



 
Alexey Viktorov :

당신이 가장 잘 알고...

유형

크기(바이트)

최소 양수 값

최대값

C++의 아날로그

뜨다

4

1.175494351e-38

3.402823466e+38

뜨다

더블

여덟

2.2250738585072014e-308

1.7976931348623158e+308

더블


파일의 크기(바이트), 이중 유형 이 차지하는 크기(바이트), zhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzhzh



zhzhzhzhzh는 무엇입니까? 어울리지 않아, 젠장, 더 쉬울 수 없니?
 
Top2n :
zhzhzhzhzh는 무엇입니까? 어울리지 않아, 젠장, 더 쉬울 수 없니?
조금만 정신을 바짝 차려주세요. 나는 당신을 위해 하지 않고 제안할 수 있습니다. 당신은 어떤 데이터를 가지고 있고 배열의 차원은 무엇입니까 ... 나는이 모든 것을 기억하고 당신을 승리로 이끌고 싶지 않습니다.
 

Получается, что если массив динамический, то формула /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); //записываем в файл все элементы массива

 


bin 파일을 새 막대 로 보완하는 줄의 코드

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 ;
        }
 
Top2n :

Получается, что если массив динамический, то формула /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); //записываем в файл все элементы массива

 


bin 파일을 새 막대 로 보완하는 줄의 코드

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 ;
        }


어디서 읽었는지 기억나지 않지만 파일을 쓰기 전용으로 열면 그 안의 모든 것이 삭제됩니다.

int handle= FileOpen (path, FILE_WRITE | FILE_BIN );

파일을 읽고 쓰기 위해 열어야 합니다.

int handle = FileOpen (path, FILE_READ | FILE_WRITE | FILE_BIN );
파일을 읽기 전용으로 열면 쓰기 플래그를 지정할 수 있고 지정하지 않는 것이 좋습니다.
 
Alexey Viktorov :

어디서 읽었는지 기억나지 않지만 파일을 쓰기 전용으로 열면 그 안의 모든 것이 삭제됩니다.

int handle= FileOpen (path, FILE_WRITE | FILE_BIN );

파일을 읽고 쓰기 위해 열어야 합니다.

int handle = FileOpen (path, FILE_READ | FILE_WRITE | FILE_BIN );
파일을 읽기 전용으로 열면 쓰기 플래그를 지정할 수 있고 지정하지 않는 것이 좋습니다.
나를 용서하지만 나는 이미 관리했습니다) 문제도 이것 중 하나였습니다)) 나는 찌르기로 팠습니다))))
 

AAA는 잘했다고 생각했다

새 데이터를 처음에 쓰고 전체 시작 부분에 씁니다. 어떻게 든 시작 부분의 크기를 늘릴 수 있습니까?)

즉, 초기 진입이 제한되어 있습니까? 아니면 끝까지 저장만 계속하시겠습니까?

FileSeek (handle, 0 , SEEK_SET );

그리고 데이터를 끝까지 저장하고 계속 추가하면 끝에서 원하는 양까지 어떻게 읽나요? 또는 오히려 N에서 끝까지 bin 파일에서 원하는 조각을 캡처하는 방법

아니면 잘못된 팀과 함께 했습니까!?!?

두 개의 배열을 끝까지 저장합니다. 빈의 무게를 올바르게 늘려서 이해한 대로 작성했습니다.

다음으로 마지막 레코드를 캡처하는 작업으로 데이터를 배열로 전송하려고 합니다. bin 파일의 차원이 배열보다 큽니다.

   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 );  что делает  - определяет положение массива или в бине?
 

다음을 사용하여 바이너리 파일에서 원하는 섹션을 읽으면

FileReadArray (file_handle,arr, 0,WHOLE_ARRAY );

그런 다음 원하는 결과를 얻을 수 없으면 알고리즘이 배열 자체를 처리하고 셀의 지정된 섹션에 속하지 않는 항목은 빈의 위치와 유사하게 브로드캐스트되어 동일한 한계에서 요청된 간격을 차례로 제공합니다. 0만 있는 빈에서와 같이 위치를 지정합니다.

 
Top2n :

다음을 사용하여 바이너리 파일에서 원하는 섹션을 읽으면

FileReadArray (file_handle,arr, 0,WHOLE_ARRAY );

그런 다음 원하는 결과를 얻을 수 없으면 알고리즘이 배열 자체를 처리하고 셀의 지정된 섹션에 속하지 않는 항목은 빈의 위치와 유사하게 브로드캐스트되어 동일한 한계에서 요청된 간격을 차례로 제공합니다. 0만 있는 빈에서와 같이 위치를 지정합니다.

무엇이 잘못될 수 있는지 이해가 되지 않습니다...

그냥 멍청하게 파일을 열어서 읽어라

handle = FileOpen (path, FILE_READ | FILE_BIN );

포인터를 원하는 방향으로 필요한 바이트 수만큼 이동

FileSeek (handle, - 32 , SEEK_END );
// В данном случае от конца файла на 32 байта

32바이트는 8개의 정수 값 또는 4개의 부동 소수점 값입니다.

배열이 2차원이면 배열이 int 유형이면 4줄, 배열 유형이 double이면 2줄만큼 이동한다는 의미입니다.

다음으로 동적 arr[][2]로 미리 선언된 배열로 값을 읽습니다. 이것은 2차원 배열입니다.

FileReadArray (handle, arr);

모두!!!

다음으로 배열의 크기를 결정합니다.

int size = ArrayRange (arr, 0 );

결과 값을 인쇄하십시오.

int i, z;

for (i = 0 ; i < size; i++)

  {
   for (z = 0 ; z < 2 ; z++)
    {
     Print ( "arr[" , i, "][" , z, "]" , arr[i][z]);
    }
  }
 
Alexey Viktorov :

무엇이 잘못될 수 있는지 이해가 되지 않습니다...

고맙습니다! 성공))))