Erros, bugs, perguntas - página 2580

 
Koldun Zloy:

1. Na MQL é copiado um fio, não um ponteiro.

_DLLAPI void fnReplaceString(wchar_t * text, wchar_t *from, wchar_t * to)
{
   wchar_t * cp;
   
   //проверка параметров
   if(text==NULL || from==NULL || to==NULL) return;
   if(wcslen(from)!=wcslen(to))             return;
 
   //поищем подстроку
   if((cp=wcsstr(text,from))==NULL)         return;

   //заменим
   memcpy(cp,to,wcslen(to)*sizeof(wchar_t));
}
#import "MQL5DLLSamples.dll"
void fnReplaceString(string & text, string from, string to);
#import


Secção 3.3

 
Koldun Zloy:

2. Destacou uma linha de 200 caracteres em MQL. Depois copiou 164 caracteres para o mesmo. Depois disso, ver o tamanho da corda em MQL. Restam 200.

Comprimento, não tamanho! Comprimento em caracteres, tamanho em bytes.
Verificado, depois de obter um fio de 164 caracteres, sim, o comprimento ainda é de 200.
Alguma ideia sobre isto?

 
Roman:

Por isso, para corrigir a situação, desisti da memória, e usei wcscpy ou wcsncncpy.
Resultado, poste acima.

Quis dizer sizeof( wchar_t* ).

 
Roman:


Secção 3.3

Seria melhor não discutir comigo, mas ler este artigo com mais atenção. E descobrir o que se está a passar ali.

Assim não terá quaisquer problemas.

O que se quer fazer não é realmente assim tão complicado.

 
Roman:

Comprimento, não tamanho! Comprimento em caracteres, tamanho em bytes.
Verificado, depois de obter um fio de 164 caracteres, sim, o comprimento ainda é de 200.
Alguma ideia sobre isto?

A razão de ser deste caso já foi explicada acima.

 
Koldun Zloy:

O que se quer fazer não é realmente assim tão difícil.

Portanto, diga-me se não é tão difícil.
Ou acha que este é um comportamento normal?

 
Roman:

Portanto, diga-me se não é tão difícil.
Ou acha que este é um comportamento normal?

Então não planeia sequer compreender nada, apenas dar-lhe uma receita pronta e pronto e pronto?

Não compreendo porque quereria fazer programação se é um fardo para si, mas isso depende de si.


Acha que alguém o vai querer ajudar se fizer uma pergunta e não quiser mostrar um código reproduzível detalhado,

ou não o leia, ou não discuta com aqueles que sabem muito mais?


Portanto, não haverá uma receita pronta. Vou escrever um princípio geral de obter um fio a partir de uma DLL. Pode escrever o código você mesmo, se se considerar um programador.


1. Na MQL cria-se o ushort array.

Inicializá-lo.

3. Passar a matriz e o seu tamanho para DLL.

4. Na DLL, copiar uma string para esta matriz usando a função wmemcpy_s().

5. Devolver o comprimento da cadeia copiada da DLL.

6. Em MQL, criar uma cadeia a partir da matriz usando a função ShortArrayToString().

 
Comentários não relacionados com este tópico foram transferidos para "Perguntas dos principiantes do MQL4 MT4 MetaTrader 4".
 

Num dos servidores (não MQ) o MT5 fica louco - carrega o CPU a 100% e regista intensivamente estas mensagens para diferentes instrumentos:

HistóriaBase de actualização espontânea constante

Os gráficos estão a piscar. É impossível de trabalhar.

Existe alguma possibilidade de o arranjar localmente ou a única saída - esperar que o servidor termine alguns jogos?

 
Koldun Zloy:

Então não planeia sequer compreender nada, apenas dar-lhe uma receita pronta e pronto e pronto?

Não compreendo porque quereria fazer programação se é um fardo para si, mas isso depende de si.

Acha que alguém o vai querer ajudar se fizer uma pergunta e não quiser mostrar um código reproduzível detalhado,

ou não o leia, ou não discuta com aqueles que sabem muito mais?

Portanto, não haverá uma receita pronta. Vou escrever um princípio geral de obter um fio a partir de uma DLL. Pode escrever o código você mesmo, se se considerar um programador.


1. Na MQL cria-se o ushort array.

Inicializá-lo.

3. Passar a matriz e o seu tamanho para DLL.

4. Na DLL, copiar uma string para esta matriz usando a função wmemcpy_s().

5. Devolver o comprimento da cadeia copiada da DLL.

6. Em MQL, criar uma cadeia a partir da matriz usando ShortArrayToString().

Onde vê um argumento aqui? Esta é uma discussão de trabalho, sem necessidade de torcer o significado para um galinheiro, com pathos arrogantes.
Não pediu nada pronto a fazer. Pensei que você e o ponteiro tinham uma solução, mas não tinham.
É você que não leu o assunto; já há muito tempo que se discutem aqui matrizes, e todos o conhecem muito bem.
E há muito tempo que me inclino para as arraias. Mas como o mql tem cordel, porque não usá-lo directamente?
É precisamente este bug no fio do mql, ou seja, a cópia de um ponteiro para dentro dele, que estamos a discutir aqui.
Digo-vos mais, não é apenas através de uma breve introdução que tudo pode ser resolvido. Há muitas opções com matrizes.
Mas no meu caso não quero usar arrays, uma vez que a estrutura do código nem sempre faz sentido.
Ainda mais quando tenho um fio de mql com o qual posso trabalhar directamente, mas deve funcionar correctamente.