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

 
   FileReadArray (file_handle,arr);

가능한 개발을 조언하십시오.

배열[100]이 있고 크기가 [1000]인 바이너리 파일도 저장되어 있는데, 마지막 100개 값의 바이너리 파일 배열을 반환하는 방법입니다. 보편적 인 것이 있습니까? 다시 12시간 파기, 그리고 아무것도.

 
Top2n :
   FileReadArray (file_handle,arr);

가능한 개발을 조언하십시오.

배열[100]이 있고 크기가 [1000]인 바이너리 파일도 저장되어 있는데, 마지막 100개 값의 바이너리 파일 배열을 반환하는 방법입니다. 보편적 인 것이 있습니까? 다시 12시간 파기, 그리고 아무것도.

내가 올바르게 기억한다면 count = WHOLE_ARRAY이거나 값이 배열 요소의 수를 초과하면 전체 배열이 끝까지 쓰여진다고 mql4에 작성되었습니다. 그리고 주식에 대한 언급은 없었습니다. 즉, 1000에 대해 이야기 할 수 없습니다.

다음과 같이 확인할 수 있습니다. 기록된 값과 파일의 크기를 계산합니다.

 
Alexey Viktorov :

내가 올바르게 기억한다면 count = WHOLE_ARRAY이거나 값이 배열 요소의 수를 초과하면 전체 배열이 끝까지 쓰여진다고 mql4에 작성되었습니다. 그리고 주식에 대한 언급은 없었습니다. 즉, 1000에 대해 이야기 할 수 없습니다.

다음과 같이 확인할 수 있습니다. 기록된 값과 파일의 크기를 계산합니다.

배열을 바이너리에 쓴 후 잠시 후 새로운 데이터가 나타나고 새로운 odomeric 배열을 통해 바이너리에 계속 쓴다는 사실에 대해 말하는 것이 아닙니다(= 기본 배열의 열 차원 ), 새로운 j 열에 따라 파일의 끝까지 매번

그런 다음 원래 배열의 인덱스와 같은 수의 이진 데이터를 제거해야 하며 첫 번째 반복에서 이진으로 전송되었습니다. 그러나 보조 행의 추가로 인해 바이너리가 기본 배열보다 크기 때문에 마지막 데이터가 이 제한된 배열에 들어가는 방식으로 제거합니다. 보조 문자열은 읽을 수 있는 배열에 속해야 하고 바이너리의 첫 번째 문자열은 비영역에 있어야 합니다.

 
Top2n :

배열을 바이너리에 쓴 후 잠시 후 새로운 데이터가 나타나고 새로운 odomeric 배열을 통해 바이너리에 계속 쓴다는 사실에 대해 말하는 것이 아닙니다(= 기본 배열의 열 차원 ), 새로운 j 열에 따라 파일의 끝까지 매번

그런 다음 원래 배열의 인덱스와 같은 수의 이진 데이터를 제거해야 하며 첫 번째 반복에서 이진으로 전송되었습니다. 그러나 보조 행의 추가로 인해 바이너리가 기본 배열보다 크기 때문에 마지막 데이터가 이 제한된 배열에 들어가는 방식으로 제거합니다.

그러면 읽기 전에 배열의 차원 을 할당할 필요가 없습니다. 첫 번째 데이터가 필요하지 않으면 바이트 단위로 크기를 계산하고 필요한 양만큼 읽기 시작 위치를 이동해야 합니다.
 
Alexey Viktorov :
그러면 읽기 전에 배열의 차원 을 할당할 필요가 없습니다. 첫 번째 데이터가 필요하지 않으면 바이트 단위로 크기를 계산하고 필요한 양만큼 읽기 시작 위치를 이동해야 합니다.

바이트를 계산하는 방법에 대한 질문입니다.

FileWriteInteger (h,s1, INT_VALUE ); //ножно ли перед записью записывать размера массива?
s1= FileReadInteger (h, INT_VALUE ); //ножно ли перед восстановлением считываем размер массива?

может как то через это sizeof
 
Top2n :

바이트를 계산하는 방법에 대한 질문입니다.

FileWriteInteger (h,s1, INT_VALUE ); //ножно ли перед записью записывать размера массива?
s1= FileReadInteger (h, INT_VALUE ); //ножно ли перед восстановлением считываем размер массива?

может как то через это sizeof

데이터가 double 유형 이면 파일 크기 를 double 유형의 숫자가 차지하는 바이트 수, 즉 8로 나눕니다.

Документация по MQL5: Файловые операции / FileSize
Документация по MQL5: Файловые операции / FileSize
  • www.mql5.com
Файловые операции / FileSize - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov :

데이터가 double 유형 이면 파일 크기 를 double 유형의 숫자가 차지하는 바이트 수, 즉 8로 나눕니다.

FileFindFirst 를 통해?

또는 각 새 줄을 바이트 단위로 합산하십시오.

Короче при записи начал суммировать вторичный массив в байтах, каждая запись плюсуется с предыдущей
file_size=+ FileSize (handle); // чтобы выяснить индекс от которого открывать

FileReadArray (file_handle,arr,file_size, WHOLE_ARRAY );
뭔가가 아니라
 
Top2n :
FileFindFirst 를 통해?
따라서 동일한 파일 이름과 핸들이 있습니다.
 
Top2n :

FileFindFirst 를 통해?

또는 각 새 줄을 바이트 단위로 합산하십시오.

Короче при записи начал суммировать вторичный массив в байтах, каждая запись плюсуется с предыдущей
file_size=+ FileSize (handle); // чтобы выяснить индекс от которого открывать

FileReadArray (file_handle,arr,file_size, WHOLE_ARRAY );
뭔가가 아니라

답글을 달고 글을 수정하시면 안됩니다...

이 방법이 아닙니다. 배열을 읽기 전에 크기를 결정합니다. file_size = FileSize (핸들); 점유된 메모리를 데이터 유형으로 나눕니다. 즉, 두 배의 경우 8입니다. 파일의 숫자 수를 얻습니다. 배열이 2차원이면 파일에 정확히 2배 적은 항목이 있습니다. 그리고 원하는 라인에서 읽기 위해 이동해야 하는 바이트 수를 알 수 있습니다.

 
Alexey Viktorov :

헛되이 답변 후 게시물을 편집합니다 ...

이 방법이 아닙니다. 배열을 읽기 전에 크기를 결정합니다. file_size = FileSize (핸들); 점유된 메모리를 데이터 유형으로 나눕니다. 즉, 두 배의 경우 8입니다. 파일의 숫자 수를 얻습니다. 배열이 2차원이면 파일에 정확히 2배 적은 항목이 있습니다. 그리고 원하는 라인에서 읽기 위해 이동해야 하는 바이트 수를 알 수 있습니다.

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