Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1868

 
Andrey Sokolov #:

Ao menos leia o que você está respondendo.

Oh... está bem. Estou confuso. Eu tenho que escrever muito. É por isso que eu poderia estar errado.

Mas tenho a impressão de que você é que não sabe o que fazer ou como fazê-lo... Você poderia ter ajudado avladeimirami.

 
Artyom Trishkin #:

Haverá uma complicação se você precisar escrever um número na matriz em vez do código da tecla pressionada. Por exemplo, 123. Isto preencherá três células da matriz - cada uma terá valores 1, 2 e 3, não uma com o valor 123.

Isto significa que você tem que ler as chaves separadamente e terminá-las separadamente. Em outras palavras, informe ao programa que a entrada de números já começou e informe que está concluída e você pode escrever o número inserido na matriz.

Se a matriz for uchar então você pode usaro StringToCharArray. Ou crie sua própria função que acrescenta um número a cada célula em uma cadeia. Apenas o comprimento da corda pode ser facilmente obtido e você pode fazer um loop através dele.

 
Mihail Matkovskij #:

Ah... tudo bem. Estou confuso. Eu tenho que escrever muito. Portanto, eu poderia estar errado.

Mas tenho a impressão de que você é que não sabe o que fazer ou como fazê-lo... Você poderia ter ajudado avladeimirami.

Seu inútil corrico é claramente desnecessário aqui. E as respostas que não são de corrico ou são erradas ou uma mentira completa.

Todas as suas respostas ao longo das últimas páginas são ou desinformação ou besteira, mentira e trolling, não entendo porque você as escreve, a menos que você esteja ajustando a contagem dos correios, elas não são úteis, apenas prejudiciais.

 
Andrey Sokolov #:

Seu inútil corrico é claramente desnecessário aqui. E aquelas respostas que não são corridas ou estão erradas, ou são todas mentiras.

(risos): Está bem. Não leia minhas respostas. Leia as outras.

 
Mihail Matkovskij #:

Por que você mesmo não descobriu isso? E dizer ao usuáriovladeimirami como fazê-lo. Tudo isso está na documentação:

https://www.mql5.com/ru/docs/event_handlers/onchartevent

Ampliar a lista de constantes para as constantes requeridas:

Onde obter valores para as constantes:. Google "códigos-chave C++" (como eu disse antes). E processá-lo:

Em vez de string com impressão, inserir função que agrega valor à matriz dependendo da tecla pressionada. O que é tão difícil?

Irmãos. Muito obrigado. Muito obrigado. Seu humilde aluno Vladimir. E a vida é mais bela. É mais fácil respirar.
 
vladeimirami #:
Aleksey, eu não sou tão estúpido assim. Desculpe, eu também posso preencher a matriz dessa forma. Eu só preciso preenchê-lo a partir do teclado. Isso é o que estou tentando descobrir.

Infelizmente, há todo tipo de pessoas neste fórum. Não conheço suas habilidades, sem ofensa...

E outra pergunta, você quer dizer entrada através de um formulário de entrada? Como InputLable ou algo parecido?

A primeira coisa que vem à mente é criar OBJ_EDIT e preenchê-lo no evento CHARTEVENT_OBJECT_ENDEDIT em OnChartEvent(). Depois de inserir algum caractere, apagar o objeto. É isso aí, a matriz está cheia.

 
Olá, você poderia me dizer se eu preciso de seguro para retirar dinheiro? Você pode me contar tudo sobre isso?
 
54031252 Махмуд #:
Olá, você poderia me dizer se eu preciso de seguro para retirar dinheiro? Conte-me tudo sobre isso.
Você tem que ganhá-la primeiro.
 
Alexey Viktorov #:
Você tem que ganhá-los primeiro.
 

Estou lutando há algumas horas tentando ler os dados do banco de dados e não consigo fazer isso.

Aqui está o código para os testes.

Resumidamente. Um banco de dados é criado com uma tabela (se o banco de dados existir, a tabela é apagada e recriada). Uma única linha é adicionada à tabela.

Então o banco de dados é fechado e aberto novamente. A seleção simples deste registro é feita, mas o erro de retorno do comando que consulta o resultado é vazio.

Verificado através do IDE - tudo é selecionado pela mesma consulta. Não consegue descobrir se isto é um bug ou um conserto?

int OnInit()
{
//---
   int db_handle = DatabaseOpen("test3", DATABASE_OPEN_COMMON | DATABASE_OPEN_CREATE | DATABASE_OPEN_READWRITE);
   if (db_handle != INVALID_HANDLE)
      {
         // Структура таблицы
         if (DatabaseTableExists(db_handle, "ea_dsc"))
            if(!DatabaseExecute(db_handle, "DROP TABLE IF EXISTS ea_dsc"))
               Print("Failed to drop table with code ", GetLastError());

         string t_create = "CREATE TABLE ea_dsc (dsc_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "
                           " ea_symb TEXT NOT NULL, dt_from TEXT NOT NULL, dt_to TEXT, magic_buy INTEGER NOT NULL, "
                           " magic_sell INTEGER NOT NULL, version TEXT NOT NULL, ea_method TEXT NOT NULL)";
         if(!DatabaseExecute(db_handle, t_create))
            Print("Failed to create table with code ", GetLastError());

         string t_add = "INSERT INTO ea_dsc (ea_symb, dt_from, dt_to, magic_buy, magic_sell, version, ea_method)"
                        "VALUES ('EURUSD', 'dt_from', NULL, '123', '456', 'version', 'ea_method')";

         if(!DatabaseExecute(db_handle, t_add))
            Print("Failed to add table data  with code ", GetLastError());

         DatabaseClose(db_handle);
      }

   db_handle = DatabaseOpen("test3", DATABASE_OPEN_COMMON | DATABASE_OPEN_READWRITE);
   if (db_handle != INVALID_HANDLE)
      {
         // Запрос
         string s_quer = "SELECT dsc_id, ea_symb, dt_from, dt_to, magic_buy,"
                         "magic_sell, version, ea_method FROM ea_dsc WHERE ea_symb = ?1";
         int c_request = DatabasePrepare(db_handle, s_quer);
         if (c_request != INVALID_HANDLE)
            {
               if (DatabaseBind(c_request, 0, "EURUSD"))
                  if (DatabaseRead(c_request))
                     {
                        Print("Found!");
                     }
                  else
                     PrintFormat("Error=%d", GetLastError());
               DatabaseFinalize(c_request);
            }
         DatabaseClose(db_handle);
      }

//---
   return(INIT_SUCCEEDED);
}

Resultado do trabalho:

 PrintFormat("Error=%d", GetLastError());

Além disso, código completo anexado

Arquivos anexados:
testDB_NW.mq5  8 kb
Razão: