Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 1118
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Por favor, informe sobre possíveis desenvolvimentos.
Eu tenho array[100], também salvei arquivo binário com tamanho [1000], como devolver array de arquivo binário com os últimos 100 valores. Existe algo universal? Estou trabalhando nisto novamente há 12 horas e nada.
Por favor, informe sobre possíveis desenvolvimentos.
Eu tenho array[100], também salvei arquivo binário com tamanho [1000], como devolver array de arquivo binário com os últimos 100 valores. Existe algo universal? Estou trabalhando nisto há 12 horas e nada.
Se me lembro corretamente, foi escrito em mql4, que se contar = WHOLE_ARRAY ou valor excede o número de elementos da matriz, então a matriz inteira é escrita até o fim. E não disse nada sobre nenhuma margem. Isto é, está fora de questão, para não mencionar 1.000.
Para verificá-lo, conte quantos valores estão escritos e o tamanho do arquivo.
Se bem me lembro, foi escrito em mql4, que se contar = WHOLE_ARRAY ou valor excede o número de elementos da matriz, toda a matriz é escrita até o fim. E não disse nada sobre nenhuma margem. Portanto, pode estar absolutamente fora de questão se não houver uma margem de 1.000 mil pontos.
Para verificar isso, calcular quantos valores são escritos e o tamanho do arquivo resultante.
Não quero dizer que após escrever o array no binário, novos dados aparecem, e continuo escrevendo-os no binário através de um novo array dimensionado (= a dimensão da coluna do array primário), cada vez até o final do arquivo, para uma nova coluna j
então precisamos remover os dados do binário igual em número ao índice da matriz original, que foi transferido para o binário na primeira integração. Entretanto, os últimos dados serão incluídos nesta matriz limitada, pois o binário é maior do que a matriz primária, já que foram acrescentadas as linhas secundárias. As linhas secundárias devem ir para a matriz de leitura, e as primeiras linhas em binário devem estar fora da área.
Não quero dizer que após escrever o array para o binário, novos dados aparecem após um momento, que continuo a escrever para o binário através de um novo array dimensionado (= dimensão da coluna do array primário), cada vez no final do arquivo, para uma nova coluna j
então precisamos remover os dados do binário igual em número ao índice da matriz original, que foi transferido para o binário na primeira integração. Entretanto, os últimos dados devem ser removidos de tal forma que os últimos dados sejam incluídos nesta matriz limitada, pois o binário é maior que a matriz primária devido à adição de fileiras secundárias.
Então você não precisa atribuir um tamanho à matriz antes de ler. Se não forem os primeiros dados necessários, então calcule o tamanho em bytes e mude a posição inicial para a leitura pela quantidade certa.
Essa é a questão de como calcular os bytes
s1=FileReadInteger(h,INT_VALUE); //ножно ли перед восстановлением считываем размер массива?
может как то через это sizeof
Esta é a questão de como calcular os bytes
s1=FileReadInteger(h,INT_VALUE); //ножно ли перед восстановлением считываем размер массива?
может как то через это sizeof
Se os dados forem do tipo duplo, então divida o tamanho do arquivo pelo número de bytes ocupados pelo número do tipo duplo, ou seja, por 8.
Se os dados forem o dobro, então divida o tamanho do arquivo pelo número de bytes ocupados pelo número duplo, ou seja, por 8.
É porFileFindFirst?
ou apenas escanear cada nova linha em bytes
file_size=+FileSize(handle); // чтобы выяснить индекс от которого открывать
FileReadArray(file_handle,arr,file_size,WHOLE_ARRAY);
ComFileFindFirst?
Através deFileFindFirst?
Ou apenas bysummarize cada nova linha em bytes
file_size=+FileSize(handle); // чтобы выяснить индекс от которого открывать
FileReadArray(file_handle,arr,file_size,WHOLE_ARRAY);
Você não deveria ter corrigido seu posto depois de respondê-lo.
Errado. Antes de ler um array, defina seu tamanho file_size = FileSize(handle); e divida por memória ocupada por tipo de dado, ou seja, para o dobro por 8. Você obtém o número de números no arquivo. Se a matriz for bidimensional, então o número de registros no arquivo será duas vezes menor. E você obtém quantos bytes devem ser deslocados para ler a partir da linha desejada.
Você deveria ter corrigido seu posto após responder a ele
Errado. Antes de ler um array, defina seu tamanho file_size = FileSize(handle); e divida por memória ocupada por tipo de dado, ou seja, para o dobro por 8. Você obtém o número de números no arquivo. Se a matriz for bidimensional, então o número de registros no arquivo será duas vezes menor. E você obtém quantos bytes devem ser deslocados para ler a partir da linha desejada.