
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
uchar - Unsigned Character, why would you use this for a loop ? it doesn't make sense to me . . . use an int. Você estará trabalhando com ulongs, isso é o que é uma nova data, . . e quando você digita sem pensar nisso no futuro você será avisado . . lidar com o aviso ou ignorá-lo. Mas não espere apenas pelo melhor, faça como está fazendo agora, aprenda e compreenda
O que você postou do stackoverflow faz sentido para mim, eu acho que é um bom conselho.
uchar foi apenas um exemplo, pois minha pergunta estava relacionada ao uso de pequenos tipos de variáveis. uchar é um valor positivo de 1 byte de 0 a 255, portanto, para um loop de 0 a 100 você poderia usar o uchar de 1 byte.
Se você precisar salvar um valor retornado de uma função e a função em questão retornar um uchar, então use uma variável uchar para salvar o valor retornado . . com o mql4 original isto não foi um problema, será mais um problema com o novo mql4.
Quando fiz a pergunta, não sabia por que quereria fazer isso, foi por isso que fiz a pergunta rs...
Eu não sabia se um tipo de variável de 8 bits processaria mais rápido que um 32 bits ou se seria mais lento ou apenas o mesmo, eu não sabia se um valor de 8 bits usaria menos memória RAM ou menos espaço em disco. como agora temos esses pequenos tipos de variáveis disponíveis, eu só estava interessado em saber os prós e os contras de usá-los quando eles se encaixassem nos requisitos do bloco de código, em vez de apenas ficar com inteiros de 32 bits em toda a linha.
Pensei que talvez um sistema operacional de 32 bits pudesse processar quatro valores de 8 bits ao mesmo tempo, mas eu não sabia. Aparentemente, não sabia. Isto explica porque um sistema operacional de 64 bits não é realmente muito mais rápido que um de 32 bits, exceto pelo fato de que ele pode acessar mais RAM. Eu tinha me perguntado com freqüência sobre isso.
Tenho uma pergunta, para a qual não encontrei solução.
Como usar o vazio&? Quero dizer, se eu precisar enviar algum ponteiro para uma DLL. No arquivo de ajuda existem funções, que utilizam este tipo de vazio, mas se eu o colocar em qualquer lugar na fonte, ele não será compilado. Eu tentei usar o modelo como uma alternativa, mas o modelo é proibido dentro da declaração #importar.
Eu gerenciei a construção para tipos únicos, mas não sou capaz de implementar ponteiro de passagem de void& array para a DLL, a menos que eu especifique o tipo explícito.
Há alguma limitação para passar uma série de estruturas para uma DLL?
Suponha que o MT4Structure seja uma estrutura simples.
Tendo importado o kernel32.dll, uma única estrutura funciona muito bem:
mas não sou capaz de entrar no trabalho aceitando o conjunto de estruturas. O compilador não compilará com o MT4Structure&[] se enviado como parâmetro para esta declaração:
Há alguma limitação para passar uma série de estruturas para uma DLL?
Não vejo nenhum problema com algo assim:
Funciona como esperado (desde que você permita diferentes alinhamentos de estrutura padrão no MT4 e na DLL).
(BTW, na verdade não tenho certeza de qual é a representação interna de um bool MQL4 agora, mas prefiro declarar as funções Win32 como retornando int. As funções Win32 retornam um BOOL em vez de um C++ bool. Uma BOOL é uma macro do Windows para um inteiro de 4 bytes, cujo valor é 1/0, enquanto uma BOOL C++ é um byte único. Se você disser ao MT4 para esperar um único byte de valor de retorno das funções quando elas estão realmente retornando quatro bytes, então você pode - embora seja muito improvável - acabar com a corrupção da pilha).
Como usar o vazio&? Se eu precisar enviar algum ponteiro para uma DLL.
Não tenho bem a certeza de qual é sua pergunta. Por exemplo, a documentação da API Win32 usa void* para significar "isto aceita qualquer tipo de ponteiro para qualquer coisa; a função Win32 não se importa com o que é seu bloco de memória".
Não estou bem certo de qual é sua pergunta. Por exemplo, a documentação da API Win32 usa void* para significar "isto aceita qualquer tipo de ponteiro para qualquer coisa; a função Win32 não se importa com o que é seu bloco de memória".
Exatamente. Mas parece não ser bem possível com a MQL4, e o uso de um modelo não é permitido dentro do bloco #importante. Assim, o uso de uma estrutura adicional com winapi se transforma em uma atualização manual das declarações # de importação toda vez que um novo tipo é necessário. O que é bastante desconfortável para mim, já que minha intenção era administrar as importações em um só lugar.
Exatamente. Mas parece não ser bem possível com a MQL4, e o uso de um modelo não é permitido dentro do bloco #importante. Assim, o uso de uma estrutura adicional com winapi se transforma em uma atualização manual das declarações # de importação toda vez que um novo tipo é necessário. O que é bastante desconfortável para mim.