De qualquer forma, estou cansado de lhe explicar isso. Aqueles que quiserem, entenderão.
Obrigado por sua paciência, já que se trata de um fenômeno normal, vou conhecê-lo agora e levá-lo em consideração ao analisar os erros em meu código. Mas eu gostaria que eles simplesmente deixassem cair um erro - é uma coisa quando é impossível e outra quando, vamos chamá-la de peculiaridade ao invés de erro, é quando a peculiaridade é explicada por uma tradição estabelecida.
Obrigado por sua paciência, já que se trata de um fenômeno normal, vou conhecê-lo agora e levá-lo em consideração ao analisar erros em meu código. Mas eu gostaria que eles simplesmente deixassem cair um erro - é uma coisa quando não é possível, e outra quando, vamos chamá-la de peculiaridade em vez de erro, então quando uma peculiaridade é explicada por uma tradição estabelecida.
Basta lembrar uma coisa: o _LastError contém não apenas o código do erro real, mas também códigos de mensagens sobre a operação da função. No caso que estamos discutindo, é o código que não há nenhum objeto lá. E tudo depende do contexto, quando o objeto com nome específico é solicitado. Se for para modificar o objeto, este código indicará a necessidade de entender porque meu objeto desapareceu de repente e se for para criar um novo objeto, o código dirá que não existe tal objeto - aqui é exatamente o oposto - tudo está bem e você pode criá-lo.
E tome como regra: verifique o resultado do retorno da função e, se ele retornar um erro real, então analise o código de erro.
Em seu exemplo, você está se enganando com o fato de que a criação do objeto de tela foi bem sucedida e você acha que há um erro em algum lugar.
Basta lembrar de uma coisa: _LastError contém não apenas código de erro real, mas também códigos de mensagens de função. Neste caso, é o código que não há nenhum objeto. E tudo depende do contexto, quando o objeto com nome específico é solicitado. Se for para modificar o objeto, este código indicará a necessidade de entender porque meu objeto desapareceu de repente e se for para criar um novo objeto, o código dirá que não existe tal objeto - aqui é exatamente o oposto - tudo está bem e você pode criá-lo.
E tome isso como regra: você deve verificar o resultado do retorno da função e se ele retornar um erro real, então analise o código de erro.
Você está mexendo com seu exemplo dizendo que houve uma criação bem sucedida de um objeto de lona e acha que há um erro em algum lugar.
Ok, vou tentar pensar da maneira que você descreveu ao analisar os erros. Obrigado.
Talvez você possa dar uma resposta às minhas perguntas neste tópico, que ficou sem resposta - sobre a mudança do tamanho da lenda e a proibição de colocar informações sobre a curva criada nesta lenda?
OK, tentarei pensar de acordo com as linhas que você descreveu ao analisar os erros. Obrigado.
Talvez você possa dar uma resposta às minhas perguntas neste tópico, que ficaram sem resposta - sobre redimensionar a lenda e não permitir informações sobre a curva criada nesta lenda?
Não posso - isso leva tempo. Sinto muito, não tenho tempo.
OK, tentarei pensar de acordo com as linhas que você descreveu ao analisar os erros. Obrigado.
Redefinir o código de erro - ResetLastError()
Chamada de função.
Certifique-se de ver o que ele retornou.
Se ele retornou exatamente um erro (código de erro de função, veja ajuda para esta função em particular)
Você especifica qual é exatamente o erro com GetLastError()
Veja seu código se não deve haver tal coisa no programa ou
Em sua lógica de programa, reaja a este erro, se isto for fornecido na lógica do programa (por exemplo, paradas errôneas)
...
...
etc. ...
Se retornou um resultado, que não é um erro, mas uma resposta simples a uma pergunta
Você faz o que está na lógica do programa e não olha para o código do último erro, porque há apenas uma resposta para sua consulta à função, não uma descrição do erro
//--- draw mark and set y valueint yi_width=m_canvas.TextWidth(yvalue);
m_canvas.TextOut(m_left-yi_width-m_mark_size-m_gap,m_yc[i]-yh/2,yvalue,ColorToARGB(clrBlack),TA_LEFT);
if(m_mark_size>0.0)
m_canvas.LineHorizontal(x1,x2,m_yc[i],ColorToARGB(clrBlack));
...
//--- draw mark and set y value
m_canvas.TextOut(m_xc[i]-xw/2,y2+m_gap,xvalue,ColorToARGB(clrBlack));
if(m_mark_size>0.0)
m_canvas.LineVertical(m_xc[i],y1,y2,ColorToARGB(clrBlack));
Deve serm_y.Color() em_x.Color() em vez de selecionado, respectivamente.
Resolvido por herança de CGraphic e CreateAxes (virtual, graças a Deus).
Por que a linha horizontal não está desenhada no gráfico? Por que ele tem coordenadas do tipo int em vez de duplo?
//+------------------------------------------------------------------+//| Test_CLine.mq5 |//| Copyright 2016, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2016, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"#property script_show_inputs#include <Graphics\Graphic.mqh>
#include <Graphics\Axis.mqh>
inputint pix_X=800;//Ширина графика балансаinputint pix_Y=400;//Высота графика балансаinputbool Use_Koef=true;//Использовать коэфициент для установки ширины графика Parallelinputdouble Point_Kx=0.5;//Коэффициент ширины графика Parallelinputint Point_K=12;//Размер шрифта//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
Save_Graf_P();
}
//+------------------------------------------------------------------+void Save_Graf_P()
{
int pixx_Y=pix_Y;
int pixx_X=pix_X;
//--- отключим показ ценового графикаChartSetInteger(0,CHART_SHOW,false);
long chart=0;
string NameGraf="Test Line";
CGraphic graphicL;
if(ObjectFind(chart,NameGraf)<0)
{
graphicL.Create(chart,NameGraf,0,0,0,pixx_X,pixx_Y);//Создает графический ресурс, привязанный к объекту чарта
}
graphicL.Attach(chart,NameGraf);//Получить/создать графический ресурс и привязать его к экземпляру класса CGraphic
graphicL.BackgroundMain(NameGraf);//Получить/установить текст заголовка графика
graphicL.BackgroundMainSize(16);//Получить/установить размер шрифта заголовка
graphicL.HistoryNameSize(Point_K);//Устанавливает размер шрифта имени кривой
graphicL.HistorySymbolSize(Point_K);//Получить/установить размер символов условных обозначений
graphicL.LineAdd(-5,10,5,10,ColorToARGB(Blue,255),POINT_HORIZONTAL_DASH);//Создает и добавляет линию на график
graphicL.CurvePlotAll();//Отрисовывает все ранее созданные кривые
graphicL.Update();//Отображает на экране сделанные измененияResetLastError();
Sleep(3000);
graphicL.Destroy();//Удаляет с чарта график и уничтожает графический ресурс.ChartSetInteger(0,CHART_SHOW,true);
}
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
De qualquer forma, estou cansado de lhe explicar isso. Aqueles que quiserem, entenderão.
Obrigado por sua paciência, já que se trata de um fenômeno normal, vou conhecê-lo agora e levá-lo em consideração ao analisar os erros em meu código. Mas eu gostaria que eles simplesmente deixassem cair um erro - é uma coisa quando é impossível e outra quando, vamos chamá-la de peculiaridade ao invés de erro, é quando a peculiaridade é explicada por uma tradição estabelecida.
Pontos para este código -D.PointsFill(falso);
O erro foi devido a diferentes tamanhos de matrizes X e Y - por que não se podia escrever sobre isso no diário de bordo é um mistério.
Obrigado por sua paciência, já que se trata de um fenômeno normal, vou conhecê-lo agora e levá-lo em consideração ao analisar erros em meu código. Mas eu gostaria que eles simplesmente deixassem cair um erro - é uma coisa quando não é possível, e outra quando, vamos chamá-la de peculiaridade em vez de erro, então quando uma peculiaridade é explicada por uma tradição estabelecida.
Basta lembrar uma coisa: o _LastError contém não apenas o código do erro real, mas também códigos de mensagens sobre a operação da função. No caso que estamos discutindo, é o código que não há nenhum objeto lá. E tudo depende do contexto, quando o objeto com nome específico é solicitado. Se for para modificar o objeto, este código indicará a necessidade de entender porque meu objeto desapareceu de repente e se for para criar um novo objeto, o código dirá que não existe tal objeto - aqui é exatamente o oposto - tudo está bem e você pode criá-lo.
E tome como regra: verifique o resultado do retorno da função e, se ele retornar um erro real, então analise o código de erro.
Em seu exemplo, você está se enganando com o fato de que a criação do objeto de tela foi bem sucedida e você acha que há um erro em algum lugar.
Basta lembrar de uma coisa: _LastError contém não apenas código de erro real, mas também códigos de mensagens de função. Neste caso, é o código que não há nenhum objeto. E tudo depende do contexto, quando o objeto com nome específico é solicitado. Se for para modificar o objeto, este código indicará a necessidade de entender porque meu objeto desapareceu de repente e se for para criar um novo objeto, o código dirá que não existe tal objeto - aqui é exatamente o oposto - tudo está bem e você pode criá-lo.
E tome isso como regra: você deve verificar o resultado do retorno da função e se ele retornar um erro real, então analise o código de erro.
Você está mexendo com seu exemplo dizendo que houve uma criação bem sucedida de um objeto de lona e acha que há um erro em algum lugar.
Ok, vou tentar pensar da maneira que você descreveu ao analisar os erros. Obrigado.
Talvez você possa dar uma resposta às minhas perguntas neste tópico, que ficou sem resposta - sobre a mudança do tamanho da lenda e a proibição de colocar informações sobre a curva criada nesta lenda?
OK, tentarei pensar de acordo com as linhas que você descreveu ao analisar os erros. Obrigado.
Talvez você possa dar uma resposta às minhas perguntas neste tópico, que ficaram sem resposta - sobre redimensionar a lenda e não permitir informações sobre a curva criada nesta lenda?
Não posso - isso leva tempo. Sinto muito, não tenho tempo.
OK, tentarei pensar de acordo com as linhas que você descreveu ao analisar os erros. Obrigado.
Não posso - isso leva tempo. Infelizmente, não o tenho, desculpe.
Entendido. Vou esperar por alguém que saiba ou tenha tempo. Mas entendo que você não pode fazer isso com as ferramentas regulares da biblioteca.
Erro emCGraphic::CreateAxes:
Deve serm_y.Color() em_x.Color() em vez de selecionado, respectivamente.
Resolvido por herança de CGraphic e CreateAxes (virtual, graças a Deus).
O mesmoCGraphic::CreateAxes usam_grid.clr_frame, que não pode ser definido independentemente:
Um método deve ser adicionado para definir o valor:
Por que a linha horizontal não está desenhada no gráfico? Por que ele tem coordenadas do tipo int em vez de duplo?