Discussão do artigo "DoEasy. Funções de serviço (Parte 2): Padrão "Barra Interna"" - página 2

 
Alexey Viktorov #:

Esse idiota artificial pode reproduzir qualquer lixo acumulado nos chips. Eu lhe mostrei que será um padrão diferente. Diferente.

Não é um pouco arrogante presumir que todos aqueles cujos links estão no topo do Google são idiotas ou lixo?

 

Obrigado!
Do artigo: - "Como você pode ver, tudo funciona como anunciado. O desenho de padrões como desenhos apresenta alguns atrasos. Vamos lidar com isso."
O atraso ocorre devido à pesquisa de objetos criados pela biblioteca no gráfico. Como essa pesquisa já é síncrona. Você precisa excluir os objetos de informação do gráfico e criar novos. Então, ela será assíncrona.

da ajuda:
Você pode usar ObjectFind() ou quaisquer funções que solicitem propriedades de objetos, por exemplo, do formulário ObjectGetXXX, para verificar o resultado da execução. Mas você deve ter em mente que essas funções são colocadas no final da fila de comandos do gráfico e aguardam o resultado da execução (porque são chamadas síncronas), ou seja, podem ser demoradas. Você deve ter essa circunstância em mente se trabalhar com um grande número de objetos no gráfico.

É isso que está acontecendo aqui, por isso o atraso.

 
BmC #:

Obrigado!
Do artigo: - "Como você pode ver, tudo funciona como anunciado. O desenho de padrões como desenhos apresenta alguns atrasos. Vamos lidar com isso."
O atraso ocorre devido à pesquisa de objetos criados pela biblioteca no gráfico. Como essa pesquisa já é síncrona. Você precisa excluir os objetos de informação no gráfico e criar novos. Então, ela será assíncrona.

da ajuda:
Você pode usar ObjectFind() ou quaisquer funções que solicitem propriedades de objetos, por exemplo, do formulário ObjectGetXXX, para verificar o resultado da execução. Mas você deve ter em mente que essas funções são colocadas no final da fila de comandos do gráfico e aguardam o resultado da execução (porque são chamadas síncronas), ou seja, podem ser demoradas. Você deve ter esse fato em mente se trabalhar com um grande número de objetos no gráfico.

É isso que está acontecendo aqui, daí o atraso.

Não são os objetos no gráfico que são pesquisados, mas os objetos de classe na memória. Mas vamos resolver isso, é claro.

 
Artyom Trishkin #:

A pesquisa é realizada não para objetos no gráfico, mas para objetos de classe na memória. Mas vamos resolver isso, é claro.

Qualquer alteração de um objeto no gráfico causa uma busca.
Seu algoritmo:
1. você busca um objeto de classe na memória (sua biblioteca)
2. você altera uma propriedade de um objeto de classe na memória
3. você não exclui um objeto no gráfico, você o mantém no gráfico.
4. o terminal começa a chamar a função de busca de um objeto no gráfico, pois você não o cria, mas o altera.
5. ele encontra um objeto no gráfico no qual você precisa alterar uma propriedade do ponto 2.

Foi sobre isso que escrevi para você. Achei que você entenderia)).

Toda vez que você move o mouse sobre um padrão, você cria um objeto. Que permanece no gráfico. Se passar o mouse sobre 10 padrões, 10 objetos serão criados no gráfico.

ObjectSetInteger



Nota da ajuda: ........
Mas você deve ter em mente que essas funções são colocadas no final da fila de comandos do gráfico de outra pessoa e aguardam o resultado da execução, ou seja, podem ser demoradas. Você deve ter essa circunstância em mente se trabalhar com um grande número de objetos no gráfico.
Você já tem muitos objetos no gráfico!


É por isso que você tem um atraso ao passar o mouse novamente, porque ele não é criado como na primeira vez, mas altera as propriedades de exibição para esse período.


 
BmC #:

Qualquer alteração de um objeto no gráfico causa uma busca.
Seu algoritmo:
1. você busca um objeto de classes na memória (sua biblioteca)
2. você altera uma propriedade de um objeto de classes na memória
3. você não exclui um objeto no gráfico, ele permanece no gráfico.
4. o terminal começa a chamar a função de busca de um objeto no gráfico, pois você não o cria, mas o altera.
5. ele encontra um objeto no gráfico no qual você precisa alterar uma propriedade do ponto 2.

Foi sobre isso que escrevi para você. Achei que você entenderia)).

Toda vez que você passa o mouse sobre um padrão, cria um objeto. Esse objeto permanece no gráfico. 10 padrões sobre os quais passei o mouse, 10 objetos foram criados no gráfico.

ObjectSetInteger



Nota da ajuda: ........
Mas você deve ter em mente que essas funções são colocadas no final da fila de comandos do gráfico de outra pessoa e aguardam o resultado da execução, ou seja, podem ser demoradas. Você deve ter essa circunstância em mente se trabalhar com um grande número de objetos em um gráfico.
Você já tem muitos objetos no gráfico!


É por isso que você tem um atraso ao passar o mouse novamente, porque ele não é criado como na primeira vez, mas altera as propriedades de exibição para esse período.


Esse comportamento não deveria acontecer, é claro. Ou é um reaparecimento devido a atualizações passadas (eu tenho todo o gráfico quebrado lá agora - tudo depende um do outro e responde a eventos), ou é uma falha de projeto minha. Mas depois de algumas atualizações recentes do terminal, todos os gráficos da biblioteca estão quebrados. Carreguei a compilação antiga salva - tudo funciona lá. Assim que ela foi atualizada para a nova, tudo travou. É por isso que estou pecando nas atualizações anteriores. Ainda não tenho tempo para procurar os motivos.

Mas o fato de que muitos objetos são criados e não excluídos - isso definitivamente não foi planejado.

Obrigado por sua resposta, vou analisar o assunto quando chegar a hora.

 
Ótimo artigo, obrigado pelo trabalho que você fez!
 
Hi. O projeto DoEasy não é mais compatível? Ao tentar compilar, há muitos erros: conversão de parâmetros, redefinição do valor padrão, etc. Ou talvez você possa baixar a versão correta mais recente em algum lugar?
 
leonerd O projeto DoEasy não é mais compatível? Ao tentar compilar, há muitos erros: conversão de parâmetros, redefinição do valor padrão, etc. Ou talvez você possa baixar a versão correta mais recente em algum lugar?

Olá. O desenvolvimento está suspenso por enquanto. Mas você mesmo pode corrigir todos os erros. Provavelmente, o problema é que int e uint (long/ulong, short/ushort etc. são tipos diferentes agora).

A coisa mais fácil a fazer é adicionar uma conversão explícita de tipos em que o compilador relate um erro, por exemplo: int x = (int)y; caso y seja do tipo uint etc.

PS. Mas não. Não é tão simples assim. Muitas correções precisam ser feitas. Vou corrigi-las quando tiver tempo. Infelizmente, ainda não tenho tempo.