Erros, bugs, perguntas - página 1161

 
joo:

v4.3, firmware personalizado.

A janela principal é a posição da paisagem, outros diálogos (ordens) são retratos. Incómoda e incontrolável comutação entre a janela principal e os diálogos.

come on.... nem mesmo software especializado como o Smart Rotator.... ajuda

é engraçado, mas se se colocar à força a paisagem no Smart Rotator para o terminal, todas as janelas se tornam paisagem. mas eu quero retrato! - Eu defino o modo de retrato para o terminal, e o quê? - hehehe... ainda algumas janelas são paisagem e algumas são retrato.

 

Uma falha no meta-editor.

Suponha que temos alguma função Obj() que devolve um ponteiro a um objecto:

class CObject {   public:     int value; }; CObject object;

CObject* Obj() { return GetPointer(object); }

Agora se nos referirmos ao objecto directamente através da função:Obj().value = 10, não aparece nenhuma lista pop-up de membros e métodos da classe depois de introduzir um ponto.

 
meat:

A classe CArray não é uma panaceia, dado que o MQL não suporta padrões de classe. A nossa matriz não consiste necessariamente em tipos simples, e criar uma estrutura completa do descendente CArray para cada nova classe num programa não é muito interessante. Basta ver quantas linhas de código cada ficheiro descendente de CArray toma (ArrayInt.mqh, ArrayDouble.mqh etc.)

E a forma como a estrutura do programa está organizada é de importância secundária. Não nos desviemos do tema. A questão é que se houver algum parâmetro que possa ser alterado (neste caso é de tamanho_reserva), deverá ser possível obtê-lo.

Os tipos complexos são herdados de CObject e embalados com segurança em CArrayObj.

reserve_size - quebra o paradigma da programação económica. Existe apenas para principiantes e não deve existir de todo em línguas normais.

 
C-4:

reserve_size - viola o paradigma da programação frugal. Existe apenas para principiantes e não deve existir de todo em línguas normais.

Tem um paradigma estranho. A reserva é precisamente concebida para uma utilização económica dos recursos, reduzindo o número de realocações de memória e movimento de dados (e estas são operações bastante dispendiosas). E é um programador de código que deve gerir este parâmetro, porque só ele sabe antecipadamente como o seu programa irá utilizar a memória. E não tem nada a ver com linguagem, porque uma matriz é uma matriz, requer memória em todo o lado.

 
meat:

Este é um paradigma estranho para si. A reserva é precisamente concebida para uma utilização económica dos recursos, reduzindo o número de reafectações de memória e transferências de dados (e estas são operações bastante dispendiosas). E é um programador de código que deve gerir este parâmetro, porque só ele sabe antecipadamente como o seu programa irá utilizar a memória. E não tem nada a ver com a linguagem, porque uma matriz é uma matriz tal como ela é, requer memória em todo o lado.

Por isso, já respondeu à sua própria pergunta:

É um programador de código que deve gerir este parâmetro, uma vez que só ele sabe de antemão como o seu programa irá utilizar a memória. Não tem absolutamente nada a ver com a língua.

Não tem nada a ver com os meios linguísticos e deve, portanto, ser resolvido a um nível superior, de utilizador. Portanto, resolva a sua tarefa com classes CArray* especialmente criadas para estas tarefas, que por sinal, lidam brilhantemente com esta tarefa e como se tivessem sido criadas para ela.

 
meat:

Tem um paradigma estranho. A redundância é precisamente concebida para utilizar os recursos com parcimónia, reduzindo o número de reafectações de memória e transferências de dados (que são operações bastante dispendiosas)...

void TestFoo()
{
  CArrayObj listObj;
  listObj.Resize(100);
  for(int i = 0; i < 100; i++)
     listObj.Add(new CObject());
  int count = CountObj(listObj);
}

void CountObj(CArrayObj* obj)
{
   return obj.Size();
}
Código de super-salvamento. Não ocorre qualquer redistribuição de memória, uma vez que o número de elementos é conhecido antecipadamente. Não são os arrays que são passados mas sim as indicações para eles. A velocidade é incrivelmente rápida e não há necessidade no tamanho de reserva_size. O que é que não lhe agrada nesta solução?
 
C-4:
Código de super-salvamento. Não há qualquer redistribuição de memória, uma vez que o número de itens é conhecido de antemão. Não são os arrays que são passados mas sim as indicações para eles. A velocidade é incrivelmente rápida, e não precisamos de nenhum tamanho_reserva. O que é que não lhe convém nesta solução?

Eh, se ao menos fosse assim tão simples... No mundo real, o número de elementos não é normalmente conhecido de antemão. E além disso, este número muda de forma dinâmica. Portanto, o seu exemplo simplificado do "Hello world" não tem sentido. Pode ser substituído por apenas duas linhas:

CObject listObj[100];
int count = ArraySize(listObj);

Bem, para que serve todo este lixo? Se não usar pessoalmente o parâmetro de tamanho_reserva, é bem-vindo. Mas não se deve concluir que todos os outros são tolos ou novatos. Talvez não compreenda alguma coisa. Em recipientes STL padrão, concebidos para trabalhar com arrays (vector, cordel, etc.), métodos como reserva e capacidade também estão sempre presentes.

 
joo:

come on.... nem mesmo software especializado como o Smart Rotator.... ajuda

É engraçado, mas se eu forçar a paisagem no Smart Rotator para o terminal, todas as janelas se tornam paisagem. mas eu quero o modo retrato! - Configuro o terminal para o modo retrato, e o quê? - hehehe... ainda algumas janelas são paisagem e algumas são retrato.

funciona bem em firmware de stock (pelo menos como esperado)
 

Na última construção a pesquisa no MetaEditor (a caixa no canto superior direito) já não está a funcionar correctamente. Quando introduzo a palavra que aí procuro, ela substitui-a automaticamente por alguma frase semelhante, tirada de algum lugar que não sei onde e sem motivo. Por exemplo, tento encontrar uma variável chamada "ERROR_VALUE" mas em vez disso obtenho "error_value 7".

Pergunta: qual é o problema? De onde vem este lixo de esquerda na linha de pesquisa e como o tirar de lá?

 
meat:

Na última construção a pesquisa no MetaEditor (a caixa no canto superior direito) já não está a funcionar correctamente. Quando introduzo a palavra que aí procuro, ela substitui-a automaticamente por alguma frase semelhante, tirada de algum lugar que não sei onde e sem motivo. Por exemplo, tento encontrar uma variável chamada "ERROR_VALUE" mas em vez disso obtenho "error_value 7".

Pergunta: qual é o problema? De onde vem este lixo de esquerda na linha de pesquisa e como o tirar de lá?

Limpar o teclado.