Erros, bugs, perguntas - página 593

 

Decidi olhar para um dos meus antigos desenvolvimentos e... Pode dizer-me o que significa este erro?

---

A iniciação do Conselheiro Especialista é bem sucedida. Quando tento abrir o painel informativo, tenho uma surpresa. Onde procurar a razão? ))

 
tol64:

Decidi olhar para um dos meus antigos desenvolvimentos e... Pode dizer-me o que significa este erro?

---

A iniciação do Conselheiro Especialista é um êxito. Quando tento abrir o painel informativo, tenho uma surpresa. Onde procurar a razão? ))

Temos de localizar o problema. Estava numa situação semelhante, colocar Impressões e ver de onde voa. E depois, ou servicedesk ou fórum. Ou talvez encontre você mesmo o erro.
 
Valmars:
Temos de localizar o problema. Numa situação semelhante, coloco impressões e vejo de onde sai voando. E depois ou para serviricedesk ou no fórum. Ou talvez encontre você mesmo o erro.

Terei de imprimir onde ainda não imprimi. )) Os criadores não podem dizer a partir deste código de imagem de onde as pernas estão a crescer? Precisamos de uma dica. Embora um novo código seja sempre aí gerado. Aqui está outro exemplo:

 
tol64:

Teremos de imprimir onde não estiver impresso. )) Os criadores não podem dizer a partir deste código de imagem de onde as pernas estão a crescer? Precisamos de uma dica. Embora um novo código seja sempre aí gerado. Aqui está outro exemplo:

Os criadores irão, em qualquer caso, pedir para localizar tudo, criar uma aplicação no SD, juntar um perito e descrever tudo com o maior detalhe possível.

É por isso que eles são criadores (conhece-os) e os telepatas estão hoje em descanso. :)

 
Após copiar uma matriz dinâmica alguma_ matriz_1 declarada como alguma_ matriz_1[], que não foi alocada memória, para uma matriz dinâmica alguma_ matriz_2[], que foi alocada memória utilizando ArrayResize(some_ array_2, some_ array_2_quantity), o operador ArrayCopy(some_ array_1, some_ array_2) descobre que o número de elementos em alguma_ matriz_1 não é 0, mas alguma_ matriz_2_quantity. Isto é um erro grave porque a array some_ array_1[] não tem memória atribuída. Por favor, repare-a para que o tamanho da matriz nesta situação não mude por si só e o compilador gere um erro.
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Основы языка / Типы данных / Объект динамического массива - Документация по MQL5
 
Interesting:
Aos promotores.

Depois de mudar para a nova construção (555), o terminal deixou de guardar a posição (estado correcto da actividade) para "Ferramentas", "Market Watch", "Testador" e"Janela de dados".

Após o terminal ter sido fechado e aberto novamente (não minimizado, mas fechado), tudo fora do formulário principal desaparece. Como entendo, o terminal pensa, por alguma razão, que o comerciante fez sem estas coisas. Tenho de ir ao menu e ligar tudo de novo (o bom é que pelo menos a localização é lembrada).

O "Navegador" está localizado, como sempre, juntamente com os gráficos na janela principal do formulário, está bem.

O SO é Win XP32, Bild 555, tenho dois monitores. Numa janela principal (na qual o navegador e as cartas), e na segunda todos acima mencionados ("Ferramentas", "Market Watch", "Testador" e "Janela de Dados").

PS

Não posso dizer sobre x64 e outros SOs, não tenho a possibilidade de o verificar em dois monitores.

A mesma porcaria no 7 num só monitor. A sua reinstalação ajudou. Também o terminal confunde pastas em Roaming para diferentes terminais após a reinstalação.
 
-Alexey-:
Após copiar de uma matriz dinâmica alguma_ matriz_1 declarada como alguma_ matriz_1[], que não foi alocada memória, para uma matriz dinâmica alguma_ matriz_2[], que foi alocada memória com ArrayResize(some_ array_2, some_ array_2_quantity), utilizando o operador ArrayCopy(some_ array_1, some_ array_2) verifica-se que o número de elementos em alguma_ matriz_1 não é 0, mas alguma_ matriz_2_quantity. Isto é um erro grave porque a array some_ array_1[] não tem memória atribuída. Por favor, repare-o para que o tamanho da matriz não mude por si só nesta situação e o compilador gere um erro.

Não há erro, a função ArrayCopy irá atribuir a memória da matriz dinâmica por si só ao tamanho dos dados que estão a ser copiados.

Isto não é um insecto, mas uma característica.

 
Urain:

Não há nenhum bug, a função ArrayCopy atribui a memória da matriz receptora dinâmica por si só.

Isto não é um insecto, mas uma característica.

Devido a esta característica, pode facilmente cometer erros algorítmicos por acidente ou porque o algoritmo é defeituoso. E depois nunca o encontrará e nunca saberá quando há um erro. Só encontrei um erro quando traduzi um programa para C++ porque o compilador é lá um assistente de detecção de erros. Portanto, penso que é mais um insecto do que uma característica. IMHO!
 
-Alexey-:
Devido a esta característica, é fácil fazer erros algorítmicos - seja por acidente ou porque o algoritmo é defeituoso. E depois nunca se pode encontrar e nunca se sabe que existem erros. Só encontrei um erro quando traduzi um programa para C++ porque o compilador é lá um assistente de detecção de erros. Portanto, penso que é mais um insecto do que uma característica. IMHO!
O ArrayCopy não é a única função que atribui memória, todas as funções de cópia cuidam das matrizes propriamente ditas, por isso tenha cuidado e leia o manual.
 

Como é que o TimeCurrent() é inferior ao valor da última série temporal?

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {

   Print("time[rates_total-1] = ",time[rates_total-1]); 
   Print("TimeCurrent()         = ",TimeCurrent());  

   return(rates_total);
  }
TimeCurrent()         = 2011.12.09 18:47:29
time[rates_total-1]  = 2011.12.09 23:00:00
Razão: