[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 311

 
chief2000:

- É possível descobrir o número de elementos de um array em um arquivo? Como evitar ações desnecessárias neste caso em geral?


FileSize(handle) dividido pelo tamanho do elemento = número de elementos?
 
Figar0:

FileSize(handle) dividido pelo tamanho do item = número de itens?

Isto é uma suposição?

Como você sabe o tamanho de um item em um arquivo binário? Talvez alguma parte dela seja ocupada por mais do que apenas elementos?

 
chief2000:

Se a contagem for muito alta, você recebe muitos valores nulos (certo?)

A documentação parece dizer

Функция возвращает количество фактически прочитанных элементов.
 
chief2000:

Isto é uma suposição?

Como você sabe o tamanho de um item em um arquivo binário? Talvez alguma parte esteja ocupada por mais do que apenas os elementos?


O tamanho de um item depende do que você está escrevendo ali, seja 4 ou 8. Como é seu processo de escrita?
 
Roger:

A documentação parece dizer

Se um arquivo tem 1000 elementos e conta=20, ele na verdade será 20.

Mas o que acontece se contar=5000?

Não está claro o que eles querem dizer com "Antes de ler os dados, a matriz deve ter tamanho suficiente" - seria mais fácil ler todos os elementos na matriz pelo número de elementos, e então, se necessário, você pode truncar a matriz, etc.

 
Figar0:

O tamanho do item depende do que você está escrevendo ali, seja 4 ou 8. Como é seu processo de escrita?

Eu uso (escrita e leitura são duas etapas independentes):

 FileWriteArray( int handle, object array[], int start, int count) 
 
chief2000:

Eu uso (escrita e leitura são duas etapas independentes):


int FileWriteArray( int handle, object array[], int start, int count)

A função grava a matriz em um arquivo binário. Arrays como int, bool, datetime e cor são escritos como 4 bytes inteiros. As matrizes do tipo duplo são escritas como números de ponto flutuante. 8 bytes números de ponto flutuante.

Eu já descrevi o que você precisa saber. Se um array de duplas foi escrito no arquivo, então a divisão do tamanho do arquivo por 8 lhe dará o número de elementos do array no arquivo.

 
Figar0:

int FileWriteArray( int handle, object array[], int start, int count)

A função grava a matriz em um arquivo binário. Arrays como int, bool, datetime e cor são escritos elemento por elemento como 4 bytes inteiros. As matrizes do tipo duplo são escritas como números de ponto flutuante. 8 bytes números de ponto flutuante.

Destaquei o que você precisa saber. Se um array duplo foi escrito em um arquivo, então a divisão do tamanho do arquivo por 8 lhe dará o número de elementos do array no arquivo.

Agora abriu um arquivo salvo em um visualizador de texto - é assim que ele se parece:

Parece ter cerca de 50 elementos (deveria haver cerca de tantos elementos), mas seu tamanho é de 2432 bytes. Aparentemente, ele armazena "espaços em branco".

 
Olá a todos. Por favor, informe. Como posso usar o MQL4 em um indicador em uma janela separada para desenhar o histograma não a partir de zero, mas a partir de valores especificados. Quero que o indicador Ishimoku desenhe os valores para outros períodos de tempo em uma janela separada.
 
chief2000: Aparentemente, ele armazena o "em branco" nele.
Ele armazena o que você coloca nele) Não há milagres.