Usina BRAdvPL Guia
Entrar
← Todos os tópicos
FUNçãOPublicado

ACopy

ACopy( <aOrigem>, <aDestino>, [nInicio], [nCont], [nPosDestino] )

Copia elementos de um array para outro array de destino compatível.

ArraysMatrizesCópiaFunçõesTDN
01 · VISÃO GERAL

Visão geral

ACopy() copia elementos de um array de origem para um array de destino. A função permite definir a posição inicial da origem, a quantidade de elementos copiados e a posição inicial no destino. Diferentemente de AClone(), ela pressupõe que o array de destino já possua estrutura compatível para receber os valores; a função não redimensiona automaticamente o destino para viabilizar a cópia.

02 · SINTAXE

Sintaxe

ACopy( <aOrigem>, <aDestino>, [nInicio], [nCont], [nPosDestino] )

Parâmetros

aOrigem
ArrayObrigatório

Array de onde os elementos serão copiados.

aDestino
ArrayObrigatório

Array que receberá os elementos copiados. Deve possuir estrutura compatível.

nInicio
NuméricoOpcional

Posição inicial do array de origem a partir da qual os elementos serão copiados.

Padrão: 1
nCont
NuméricoOpcional

Quantidade de elementos copiados. Quando omitido, considera os elementos da origem até o final.

nPosDestino
NuméricoOpcional

Posição inicial do array de destino onde os elementos serão gravados.

Padrão: 1
03 · EXEMPLO PRÁTICO

Cópia de array preparado

#Define CRLF Chr(13)+Chr(10)

User Function ACopy1()
    Local aExemplo := {1, 2, {11, 22, 33}}
    Local aBkp := {Nil, Nil, {Nil, Nil, Nil}}
    Local cMensagem := ""

    ACopy(aExemplo, aBkp)

    cMensagem += "Cópia[1] = " + CValToChar(aBkp[1]) + CRLF
    cMensagem += "Cópia[2] = " + CValToChar(aBkp[2]) + CRLF
    cMensagem += "Cópia[3][1] = " + CValToChar(aBkp[3][1]) + CRLF
    cMensagem += "Cópia[3][2] = " + CValToChar(aBkp[3][2]) + CRLF
    cMensagem += "Cópia[3][3] = " + CValToChar(aBkp[3][3])

    MsgInfo(cMensagem, "Exemplo do ACopy")
Return
Resultado esperado

Os elementos de aExemplo são copiados para aBkp, que já foi criado com estrutura compatível.

04 · EXEMPLO PRÁTICO

Cópia parcial com posição de destino

User Function ACopy2()
    Local aOrigem := {"A", "B", "C", "D"}
    Local aDestino := {"", "", "", ""}

    ACopy(aOrigem, aDestino, 2, 2, 3)

    MsgInfo("Destino: " + aDestino[1] + "," + ;
        aDestino[2] + "," + aDestino[3] + "," + aDestino[4])
Return
Resultado esperado

Copia dois elementos a partir da posição 2 da origem e grava a partir da posição 3 do destino.

BOAS PRÁTICAS
  • Use ACopy() quando já existe um array de destino preparado e você quer copiar todos ou parte dos elementos de outro array.
  • Use nInicio, nCont e nPosDestino para cópias parciais e reposicionamento dos elementos.
  • Para duplicar um array inteiro, especialmente com subarrays ou matrizes multidimensionais, avalie AClone().
  • A referência TDN informa abrangência histórica em Microsiga Protheus 8.11 e Protheus 10.
ARMADILHAS COMUNS
  • ACopy() não altera automaticamente a estrutura do array de destino para tornar a cópia possível.
  • Se o destino não tiver posições compatíveis, o resultado pode não ser o esperado ou gerar erro conforme o caso.
  • Copiar subarrays pode manter referências internas dependendo da estrutura; quando a intenção for cópia independente de estruturas multidimensionais, prefira AClone().

Conteúdos relacionados

REFERÊNCIAS
  1. TOTVS. ACopy. TDN Framework. Copia elementos de um array para outro.
  2. Programação em ADVPL Completo. Documentação oficial histórica de treinamento, seção 4.5.4, p. 45-50. Conteúdo resumido, revisado e exemplos adaptados.
Situação
Publicado
Página criada em
Última revisão em
Idioma original
Português
Revisão
Usina.BR
0 comentário(s) aprovado(s)

Comentários

Ainda não há comentários aprovados.

Entre com Google ou Microsoft para comentar.

Powered by Usina Docs · Alpha