Bibliotecas: Serialização e desserialização de JSON (MQL nativo) - página 11
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
Como assim? Você mesmo criou essas profundidades de matriz.
Eu fiz? - Não, minha imaginação não vai tão longe, mas esse é um exemplo concreto da vida, por assim dizer.
Eu quis dizer que não podemos dispensar ponteiros e construções inteligentes? Eu gostaria de manter as coisas simples (modestamente, manterei silêncio sobre o código da biblioteca em si).
Eu fiz isso? - Não, minha imaginação não vai tão longe, mas esse é um exemplo concreto da vida, por assim dizer.
Eu quis dizer que você não pode passar sem ponteiros e construções inteligentes?
O que você quer fazer sem ponteiros? O que exatamente você quer? Um pedaço de json no registro? Um botão "want money"?
O que exatamente você precisa? Um pedaço de json no registro? Um botão "quero dinheiro"?
É disso que se trata:
CJAVal* j1=GetPointer(js.m_e[i].m_e[i1]);Como você pode adivinhar, sem conhecer o código da biblioteca, o que é e por que deve ser feito para obter o que você deseja?
Pelo que vejo, não sou o único que é tão "sem noção".
ss. por exemplo, m_e - o que é essa coisa minúscula? ela não poderia se chamar, por exemplo, group? ou m_key? - Bem, não é nada além de groupName! É muito mais letras? - Não, mas é muito mais claro.
Resumindo: a biblioteca é muito poderosa e faz maravilhas, mas está escrita em uma "linguagem seca" e é melhor não olhar o código para os fracos de coração, mulheres que amamentam e crianças....
É disso que se trata:
como é possível adivinhar, sem conhecer o código da biblioteca, o que é e por que deve ser feito para obter o que se deseja? deveria haver funções como ToDbl() para acesso simples aos dados.
Pelo que vejo, não sou o único que é tão "sem noção".
ss. por exemplo, m_e - o que é essa coisa minúscula? ela não poderia se chamar, por exemplo, group? ou m_key? - Bem, não é nada além de groupName! É muito mais letras? - Não, mas é muito mais claro.
Resumindo: a biblioteca é muito poderosa e faz maravilhas, mas está escrita em uma "linguagem seca" e é melhor não olhar o código para os fracos de coração, mulheres que amamentam e crianças....
Talvez você deva tentar outra biblioteca?
Eu costumava usá-la antes, mas ela não compilava na MQL5 (versão antiga).... você precisa adaptá-la... ou tentar uma nova versão...
http://www.lordy.co.nf/mql4/
Havia algum lugar no fórum sobre isso...
---------------------
aqui está...
https://www.mql5.com/en/code/11134
É disso que se trata:
como é possível adivinhar, sem conhecer o código da biblioteca, o que é e por que deve ser feito para obter o que se deseja? deveria haver funções como ToDbl() para acesso simples aos dados.
Pelo que vejo, não sou o único que é tão "sem noção".
ss. por exemplo, m_e - o que é essa coisa minúscula? ela não poderia se chamar, por exemplo, group? ou m_key? - Bem, não é nada além de groupName! É muito mais letras? - Não, mas é muito mais claro.
Resumindo: a biblioteca é muito poderosa e faz maravilhas, mas está escrita em uma "linguagem seca" e é melhor não olhar o código para os fracos de coração, mulheres que amamentam e crianças....
Então, quem o forçou a entrar no array m_e?
Não sei o que você quer do código. E não sei que tipo de tarefa você está desenvolvendo.
---
Em primeiro lugar, json é um formato de transferência de dados, estrutura. Se você não entende a estrutura dos dados recebidos, o problema não é das minhas classes, é seu. Vá para a documentação de sua fonte de dados e procure entender isso
Em segundo lugar, a classe implementa as funções básicas de trabalho com o formato: serialização, armazenamento da estrutura e manuseio conveniente
Se você quisesse obter dados de uma determinada matriz, escreveria um código conveniente.
e não aquela besteira demorada na forma de loops para recuperar toda a estrutura. Não sei do que se trata.
talvez você deva tentar uma biblioteca diferente.
Eu costumava usá-la antes, mas ela não compilava na MQL5 para mim (versão antiga)... você precisa adaptá-la... ou tentar uma nova versão...
http://www.lordy.co.nf/mql4/
havia algum lugar no fórum sobre isso....
---------------------
aqui está...
https://www.mql5.com/en/code/11134
Obrigado, mas confio totalmente no código de Sergeyev.
Eu fui estúpido com os ponteiros, é claro, peço desculpas. Difícil de ler - fii, que problema...
o_o:
e não aquela besteira longa na forma de loops em toda a estrutura. Não sei do que se trata.
Por nome de grupo, os dados podem não existir, ou o grupo não está completo, ou o nome do grupo não está nos dados, ou qualquer outra coisa... como então?
Dessa forma, fica mais fácil e mais claro, e você sempre pode verificar o tamanho das matrizes para não ter problemas com o preenchimento das estruturas:
js.group [счетчикФирм].group [счетчикМодельногоРяда].group [счетчикМоделей].group [счетчикМодельВизОбъем].ToDbl ());
em tais variantes, não está claro o que fazer com um elemento inexistente
como este
js["фирма1"]["модельный_ряд1"][0][0].TODbl()
Desta forma
js.group [countFirms].group [countModelRow].group [countModels].group [countModelVolume].ToDbl ());
se js["firm1"] ou js.group [counterFirms] não aparecer, o que produzir? e se deve produzir alguma coisa?
nesse ponto, o elemento nulo será acessado e ocorrerá um erro....
em tais variantes, não está claro o que fazer com um elemento inexistente
como este
js["фирма1"]["модельный_ряд1"][0][0].TODbl()
desta forma
js.group [countFirms].group [countModelRow].group [countModels].group [countModelVolume].ToDbl ());
Se js["firm1"] ou js.group [counterFirms] não aparecer, o que produzir? e se deve produzir alguma coisa?
nesse ponto, haverá uma referência a um elemento nulo e um erro...
Há prateleiras em uma loja, para cada gênero e autor há uma prateleira e prateleiras diferentes (estruturas com as quais o programa trabalha). E há livros (dados) que podem ou não chegar à loja.....
E o que fazer, toda vez que for necessário redesenhar as prateleiras para uma nova chegada de livros? Não, claro que não.
Para abordar dessa forma:
js["фирма1"]["модельный_ряд1"][0][0].TODbl()
você precisa saber o nome do grupo, e se o grupo nos dados de entrada estiver lá, mas o nome não estiver lá? E se ..... muitas coisas podem acontecer...
É mais fácil verificar o tamanho dos grupos de dados e o número deles, e isso é tudo. Se pelo menos um tamanho não coincidir com nossas estruturas, isso significa que os dados estão quebrados e não faz sentido mexer neles para descobrir o que exatamente está quebrado, basta ignorar o pacote desses dados e pronto. Não há problemas com o acesso a células de matriz inexistentes (ou vazias) e não há incerteza sobre a exatidão dos dados recebidos. E o programa nunca travará por algum motivo.
Alguém ou o autor poderia responder se isso é compatível com JSON aninhado? Ou seja, uma instância CJAVal contém as chaves '2' e '3', que são outra instância CJAVal. O código parece ser executado, mas quando serializado, as chaves ficam em branco.
Por exemplo, estou recebendo:
{"":{"sl":5270.98000000,"tp":5285.26000000,"order":2},"":{"sl":5274.80000000,"tp":5289.06000000,"order":3}}Mas deveria estar recebendo
{"2":{"sl":5270.98000000,"tp":5285.26000000,"order":2},"3":{"sl":5274.80000000,"tp":5289.06000000,"order":3}}