Você poderia, é claro, ignorar os custos e despesas e reescrever um array de qualquer dimensão em um array unidimensional recém-criado em #define antes de chamar a função (e depois reescrevê-la de volta), mas os custos serão lamentáveis.
Porque nem o número de dimensões da matriz nem o tamanho de qualquer uma das dimensões desencadearão sobrecarga. E passar parâmetros que podem ser definidos automaticamente para uma função não é uma decisão muito sábia.
Porque nem o número de dimensões da matriz nem o tamanho de qualquer uma das dimensões desencadearão sobrecarga. E passar parâmetros que podem ser definidos automaticamente para uma função não é exatamente uma decisão sábia.
Na verdade, na primeira resposta à linha, foi dada uma receita universal. Você só tem que ligá-lo e testá-lo você mesmo, mas não pode mastigá-lo todo e colocá-lo em sua boca, não é mesmo?
Ilya Malev: Na verdade, na primeira resposta da linha, foi dada uma receita universal. Você só precisa ligá-lo e testá-lo você mesmo, mas não pode mastigá-lo todo e colocá-lo em sua boca, não é mesmo?
Ilya, você realmente encara o assunto como algo sério? Só para brincar e se divertir um pouco... Você deu uma resposta de trabalho: tudo a uma matriz unidimensional e de volta, independentemente da dimensionalidade. Minha resposta é a mesma que a sua, existem apenas pequenos detalhes técnicos que não mudam a essência. Eu não entendi a definição e os custos deploráveis.
Ilya, você realmente encara o assunto como algo sério? Só para brincar e se divertir um pouco... Você deu uma resposta de trabalho: tudo para uma matriz unidimensional e para trás, independentemente da dimensionalidade. Minha resposta é a mesma que a sua, existem apenas pequenos detalhes técnicos que não mudam a essência. Não entendo o que você quer dizer sobre o custo e o custo deplorável.
Não, pelo contrário, não é sério, apenas TC explicou novamente onde procurar uma solução (o primeiro posto é mais provável que funcione, embora eu não tenha verificado). E então começou todo tipo de conversa :)
Embora a situação seja triste com estas matrizes em μl na verdade, outra coisa é que elas não são necessárias em 99% dos casos. Quando você tem uma cabeça sobre seus ombros, qualquer codificador usa estruturas ou mesmo objetos.
A definição que escrevi resolve o problema que eu estabeleci)) - Uma chamada para o ArrayDel executar código, escrito por Dmitry, para diferentes matrizes. É verdade, isto não é uma função, mas um "cataplasma de homem morto", como dizem. Falando em definir custos, se você realmente quiser executar um parâmetro int ar[] para qualquer matriz, você pode fazer o seguinte (isto é uma simplificação, na verdade o número de medidas também deve ser passado para lá):
#property strict#define PackAndDel(A,S,C) { int tmp[]; ArrayCopy(tmp,A); ArrayDelete(tmp,S,C); ArrayCopy(A,tmp); }
void ArrayDelete(int &ar[], int start, int count)
{
// ..... ;
}
voidOnStart ()
{
int ar1[];
int ar2[][5];
int ar3[][6][2];
PackAndDel( ar1, 0, 1 );
PackAndDel( ar2, 4, 1 );
PackAndDel( ar3, 1, 3 );
}
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.
Por que isso não ajuda?
...
Porque nem o número de dimensões da matriz nem o tamanho de qualquer uma das dimensões desencadearão sobrecarga. E passar parâmetros que podem ser definidos automaticamente para uma função não é uma decisão muito sábia.
Porque nem o número de dimensões da matriz nem o tamanho de qualquer uma das dimensões desencadearão sobrecarga. E passar parâmetros que podem ser definidos automaticamente para uma função não é exatamente uma decisão sábia.
Sim, eu já percebi que é uma perda de tempo.
Em resumo, é um tema que vale a pena, mas é muito amplo e complicado para mim, algo que leva anos de experiência para chegar a ele.
Não entre em muitos detalhes, eles querem tornar tudo muito universal, mas você pode viver muito bem sem ele.
Na verdade, na primeira resposta da linha, foi dada uma receita universal. Você só precisa ligá-lo e testá-lo você mesmo, mas não pode mastigá-lo todo e colocá-lo em sua boca, não é mesmo?
Ilya, você realmente encara o assunto como algo sério? Só para brincar e se divertir um pouco... Você deu uma resposta de trabalho: tudo a uma matriz unidimensional e de volta, independentemente da dimensionalidade. Minha resposta é a mesma que a sua, existem apenas pequenos detalhes técnicos que não mudam a essência. Eu não entendi a definição e os custos deploráveis.
Ilya, você realmente encara o assunto como algo sério? Só para brincar e se divertir um pouco... Você deu uma resposta de trabalho: tudo para uma matriz unidimensional e para trás, independentemente da dimensionalidade. Minha resposta é a mesma que a sua, existem apenas pequenos detalhes técnicos que não mudam a essência. Não entendo o que você quer dizer sobre o custo e o custo deplorável.
Não, pelo contrário, não é sério, apenas TC explicou novamente onde procurar uma solução (o primeiro posto é mais provável que funcione, embora eu não tenha verificado). E então começou todo tipo de conversa :)
Embora a situação seja triste com estas matrizes em μl na verdade, outra coisa é que elas não são necessárias em 99% dos casos. Quando você tem uma cabeça sobre seus ombros, qualquer codificador usa estruturas ou mesmo objetos.
A definição que escrevi resolve o problema que eu estabeleci)) - Uma chamada para o ArrayDel executar código, escrito por Dmitry, para diferentes matrizes. É verdade, isto não é uma função, mas um "cataplasma de homem morto", como dizem. Falando em definir custos, se você realmente quiser executar um parâmetro int ar[] para qualquer matriz, você pode fazer o seguinte (isto é uma simplificação, na verdade o número de medidas também deve ser passado para lá):