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
Java também não está funcionando fora de sua máquina virtual, lá você terá os mesmos problemas, você não pode fazer uma dll que pode ser carregada e chamada a partir de um programa C.
Se você gosta do C# então você também gostará do ObjectPascal (o tipo de segurança, o rigor, toda a filosofia por trás dele, exceto a coisa da VM). Afinal, o designer e arquiteto chefe do C# é a mesma pessoa que uma vez criou o Turbo-Pascal e o Delphi (ObjectPascal) e ele brilha através dele. Em alguns aspectos, o C# é como o ObjectPascal com a sintaxe C (feia, mas hoje em dia moderna).
Para interfacear diretamente com a máquina e com C-APIs (como é necessário para MetaTrader) e ainda usando uma linguagem tão poderosa quanto C#, não há muitas alternativas ao ObjectPascal. Alguns dizem que o C++ é igualmente poderoso (e pode também ser usado no lugar de OP), mas claramente não é tão elegante, tem muitas inconsistências e é tão propenso a erros que somente verdadeiros especialistas podem realmente dominá-lo.
.... o retorno dentro de uma função fará com que ela retorne ao lugar de onde a função foi chamada.
Esta é a distinção crucial 7bit: Estou falando em invocar uma função completamente diferente, subrotina ou mesmo código importado, subrotinas inteiras &/ou funções FORA de toda a função atual. Um exemplo conceitual:
Estou em uma função que acontece da linha 100 à linha 20, mas quero invocar algo que não se enquadra neste escopo. Talvez uma função totalmente diferente que esteja nas linhas 50 a 60. <=-Isso não se encaixa nos parâmetros e exemplo acima, que é o que estou perguntando sobre É um substituto 100% do antigo gosub/retorno e, adicionalmente, a função permite passar valores e retornar valores.
Você PODE ter múltiplas declarações de retorno dentro da mesma função e também pode romper os loops com quebra ....
Entendido
Mas continuo sendo informado sobre como posso me mover dentro do escopo de uma função específica, o que eu entendo. Mas NÃO é sobre isso que estou perguntando e afirmei no início de tudo isso.
Quanto a 'exceções', então acho que você pode chamá-las assim, se desejar. Como afirmei, estou tentando encontrar um "trabalho ao redor" para acrescentar e utilizar a funcionalidade de funções como, por exemplo: GoTo, GoSub (fora da função CURRENT) etc. que não existe como uma função diretamente dentro da MQL4. Por suas respostas, a maioria de vocês conhece e compreende estas distinções de programação, mas não estão abordando a pergunta realmente feita.
FourX:
Estou em uma função que ocorre da linha 100 à linha 20, mas quero invocar algo que não se enquadra neste escopo. Talvez uma função totalmente diferente, que se situa nas linhas 50 a 60.considere isto:
O que vai acontecer agora? Vamos começar com main(), vou explicar todas as etapas durante a execução (os comentários estão em verde, as instruções estão em preto):
Você consegue ver? a função foo precisa de uma estrutura de pilha local de 8 bytes mais o endereço de retorno e a função bar apenas 4 bytes mais o endereço de retorno. Suas declarações de retorno já foram incorporadas pelo compilador em tempo de compilação, eles populam quantidades diferentes de bytes da pilha, você não pode usar um retorno para fazer o trabalho do outro, cada um funciona apenas para a função para a qual foi compilado.
Estes antigos idiomas que tinham GOTO em todo o programa não tinham escopo variável local e a única coisa que você tinha que acertar era igualar o número de GOSUB e RETURN para ser igual, todos os seus retornos só apareciam com o endereço de retorno e nada mais, todos os retornos se comportavam exatamente da mesma forma. Mas agora temos muitos "GOSUB "s de tamanhos diferentes (cada um empurra quantidades diferentes para a pilha) e também muitos retornos diferentes que populam quantidades diferentes da pilha. E temos variáveis locais na pilha. Isto simplesmente não pode funcionar, não importa as loucuras que você tente construir no compilador.
Você poderia teoricamente GOTO dentro da função *same* (e algumas linguagens permitem isto), mas você não pode me mostrar um código onde isto realmente levaria a um código mais elegante e mais fácil de entender e mais fácil de manter do que uma programação estruturada adequada. Tudo o que ele faria seria produzir uma confusão horrível. Ninguém precisa disto, portanto não é implementado.
Todos nós já sabemos que a MQL4 não tem funções nativas como um GoTo OU um 'GoSub -=> ReturnFromGoSub'. Não há nenhuma disputa sobre isso. Isto agora se tornou em repetidas explicações e exemplos do fato de que a MQL4 não tem tais funções nativas. Não há discussão a respeito. Não é disso que se trata este tópico e nunca foi. Então, podemos por favor parar de discutir sobre o que já sabemos e concordar?
Sabemos que estas são funções válidas em outras linguagens de programação e podem ser muito úteis.
O objetivo disto é descobrir SE pudermos simular e utilizá-las com o que está disponível na MQL4?
Por exemplo, uma conclusão válida da função do segundo caso na primeira frase de'GoSub -=> ReturnFromGoSub ' seria para: Retornar ao ponto do programa que o GoSub foi chamado e retornar os valores do GoSub para o ponto de chamada no programa.
Por exemplo, uma conclusão válida da função do segundo caso na primeira frase de'GoSub -=> ReturnFromGoSub ' seria para: Retornar ao ponto do programa que o GoSub foi chamado e retornar os valores do GoSub para o ponto de chamada no programa.
FourX:
'GoSub -=> ReturnFromGoSub ' seria para: Retornar ao ponto do programa que o GoSub foi chamado e retornar os valores do GoSub para o ponto de chamada no programa.
FourX se você está aprendendo mql4 enquanto ainda tem sua mente ainda está na BBC Basic pensar defproc e proc e esquecer GoTo e GoSub.
Eu tinha uma micro BBC no início dos anos 80 ....ahhhh ainda me lembro das alegrias de tentar conseguir programas para carregar sua unidade de fita cassete :( nós costumávamos escrever programas na BBC Basic
FourX se você está aprendendo mql4 enquanto ainda tem sua mente ainda está na BBC Basic pensar defproc e proc e esquecer GoTo e GoSub.
Eu tinha uma micro BBC no início dos anos 80 ....ahhhh ainda me lembro das alegrias de tentar conseguir programas para carregar sua unidade de fita cassete :( nós costumávamos escrever programas na BBC Basic
LOL . . . Eu tinha um Acorn Electron . . . quando estava quente não lia coisas da fita adesiva que eu tinha escrito quando estava frio e o visto versa . . . esses eram os dias. ;-)
Sim, eram os dias certos :) torcendo uma chave de fenda dobrada naquele pequeno parafuso pelas cabeças da fita, enquanto batia repetidamente na lateral da fita haha