Erros, bugs, perguntas - página 1845

 
Nikolai Semko:
Um pedido aos criadores.
A possibilidade de salvar algumas variáveis ou arrays ao mudar os prazos, para que a sua reinicialização não aconteça, está muito ausente. Ou pode ser feito de alguma forma através deOnDeinit, definindo um código da razão REASON_CHARTCHANGE?
Tenho apenas cálculos bastante pesados, independentes do tempo, no corpo do meu programa e não os quero recalcular todas as vezes. Sinto que nos falta algum tipo especial de variáveis globais, que não são reinicializadas quando o prazo muda. Aprendi a fazê-lo com variáveis simples sem variáveis globais no terminal, mas com estruturas ou matrizes não tenho ideia de como fazê-lo, e parece que tal possibilidade simplesmente não existe. Pode, claro, utilizar recursos, mas é muito frustrante.
Tente usar um indicador. As variáveis globais não são aí reinicializadas quando se muda de TF (tanto quanto me lembro). Ou através de um ficheiro.
 
Konstantin:

como?

Assim:

struct MyArray
{
   double buff[];
   
   MyArray()
   {
   }
   MyArray( int n )
   {
      ArrayResize( buff, n );
   }
   MyArray( const MyArray& other )
   {
      ArrayCopy( buff, other.buff );
   }
   ~MyArray()
   {
      ArrayFree( buff );
   }
   
   void operator=( const MyArray& other )
   {
      ArrayCopy( buff, other.buff );
   }
   
   void assign( int n, const double val = 0.0 )
   {
      ArrayResize( buff, n );
      ArrayInitialize( buff, val );
   }
};

MyArray func()
{
   MyArray myArray;
   
   // Заполняем массив.
   
   return myArray;
}
 
Koldun Zloy:

Por exemplo, como este:

Não foi isso que foi perguntado, mas talvez isso fosse adequado ao autor da pergunta, para a qual existe uma resposta inequívoca - NENHUMA.

Não há recusa no Service Desk

Fórum sobre comércio, sistemas automatizados de comércio e teste de estratégias comerciais

Insectos, insectos, perguntas

fxsaber, 2017.04.02 10:34

É possível compensar a falta de indicadores para uma matriz introduzindo a capacidade de devolver uma matriz com uma função?
int[] Func()
{
  int a[] = {1, 2, 3};

  return(a);
}

Print(Func()[1]); // 2

Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial

Insectos, insectos, perguntas

fxsaber, 2017.04.01 10:20

Era uma vez, o operador [] foi adicionado ao tipo de corda
string Str = "AB C";
Print(CharToString(Str[1])); // B


É possível do lado dos programadores adicionar um = operador para as arrays?

int a[], b[];
a = b; // ArrayCopy(a, b);


Uma vez que não existem indicadores, um tal operador tornaria a língua mais flexível - encontraria situações em que seria MUITO útil.

 
Alexey Kozitsyn:
Tente usar um indicador. Há variáveis globais que não são reinicializadas quando a TF muda (tanto quanto me lembro). Ou através de um ficheiro.

É o contrário:

Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial

Inicialização de variáveis globais do programa e outros conhecimentos úteis.

Artyom Trishkin, 2016.12.05 20:27

Resposta recebida de SD:


Penso que se pode utilizar com segurança uma tal característica de EAs variáveis globais.


 
Alexey Kozitsyn:
Tente usar um indicador. As variáveis globais não são reinicializadas quando a TF é alterada (tanto quanto me lembro). Ou através de um ficheiro.

É para isto que eu utilizo o indicador. São reinicializados. O ficheiro não é de todo uma opção, é lento e é difícil de fornecer uma boa sincronização. É melhor eu usarResourceCreate neste caso.Mas tudo isto não é muito conveniente. Se tenho dezenas de matrizes, algumas delas com vários Mb, tenho de escrever pelo menos duas funções de leitura e escrita, criar um manipulador emOnDeinit. Já experimentei tudo isto, enfrentei o problema da sincronização, porque os recursos e ficheiros têm as suas próprias vidas separadas em multithreading. Porquê fazer uma corcunda quando não há possibilidade suficiente para não reinicializar em determinado evento, no meu caso a mudança de prazo.
 
Nikolai Semko:

Indicador e eu utilizo-o. Reinicializado. O ficheiro não é de todo uma opção, é lento e é difícil fornecer uma sincronização de qualidade. É melhor eu usarResourceCreate neste caso.Mas tudo isto não é muito conveniente. Se tenho dezenas de matrizes, algumas delas com vários Mb, tenho de escrever pelo menos duas funções de leitura e escrita, criar um manipulador emOnDeinit. Já experimentei tudo isto, enfrentei o problema da sincronização, porque os recursos e ficheiros têm as suas próprias vidas separadas em multithreading. Não sei porque me preocupei com isso quando simplesmente quero evitar a reinicialização de algum evento em particular, no meu caso foi uma mudança de calendário.
A resposta está aqui.
 
Artyom Trishkin:

É exactamente o oposto:



Obrigado, eu não sabia sobre a EA!
Mas meu, se eu precisar desse chip no indicador!

 
Koldun Zloy:

Por exemplo, como este:


obrigado pelo exemplo, mas criar um objecto de um tipo complexo por causa de um único conjunto é exactamente o que eu não quero, tudo parece um código excessivo ))
 
fxsaber:

Não foi isso que foi perguntado, mas talvez isso fosse adequado ao autor da pergunta, para a qual existe uma resposta inequívoca - NENHUMA.

Não há recusa de o fazer no Service Desk



esperemos que introduzam esta característica, embora fosse mais habitual introduzir um ponteiro para as arrays
 
Artyom Trishkin:

É exactamente o oposto:

Oh, meu... Sim, eu fui guiado exactamente pelo vosso posto, apenas confundi tudo:)