Arrays são variáveis 4D. Como qualquer variável, um array tem um alcance e segue as regras da linguagem 4D, mas com algumas diferenças.
Você pode criar e trabalhar com arrays locais, de processo e de interprocesso. Exemplos:
O alcance de estes arrays é idêntico ao alcance de outras variáveis locais, de processo e de interprocesso:
É declarado um array local aquele com nome que se inicia com o símbolo do dólar ($).
O alcance de um array local é o método em que foi criado. O array se apaga quando o método termina. Arrays locais com o mesmo nome em dois métodos diferentes podem ter tipos diferentes, porque na verdade, são duas variáveis diferentes com alcances diferentes.
Quando cria-se um array local em um método de formulário, de objeto ou de projeto, chamado de sub-rotina pelos dois tipos de métodos anteriores, o array é criado e apagado cada vez que o método de formulário ou de objeto é convocado. Em outras palavras, o array é criado e apagado para cada evento de formulário. Consequentemente, você não pode usar arrays locais em formulários, nem para visualizar, nem para imprimir.
Como no caso de variáveis locais, é uma boa idéia usar os arrays locais sempre que possível. Ao agir assim, minimiza-se a quantidade de memória necessária para rodar sua aplicação.
É declarado um array de processo aquele com nome que se inicia com uma letra.
O alcance de um array de processo é o processo em que foi criado. O array é apagado quando o processo encerra ou é abortado. Um array de processo dispõe de uma instância criada automaticamente para cada processo. Portanto, o array é do mesmo tipo para todos os processos. No entanto, seu conteúdo é particular para cada processo.
É declarado um array de interprocesso aquele com nome que se inicia com <> (no Windows ou Macintosh) ou com o símbolo de diamante, Opção-Shift-V em um teclado americano (apenas no Macintosh).
O alcance de um array de interprocesso consiste na totalidade de processos durante uma sessão de trabalho. Devem ser utilizados apenas para compartilhar dados e transferir informação entre processos.
Dica: quando sabe-se com antecedência que um array de interprocesso será acessado por vários processos que podem causar conflitos, proteja o acesso ao array com um semáforo. Para maiores informações, veja o exemplo no comando Semaphore.
Nota: Pode-se utilizar arrays de processo e de interprocesso em formulários para criar objetos de formulário como áreas de rolagem, listas de drop-dowm, etc.
Pode-se passar um array como parâmetro a um comando 4D ou a uma rotina de plug-in 4D. Por outro lado, não se pode passar um array como parâmetro para um método de usuário. A solução é passar um ponteiro ao array como parâmetro ao método. Para mais detalhes, confira a seção Arrays e ponteiros.
Diferente de variáveis de texto e alfanuméricas, não se pode apontar um array a outro. Para copiar (apontar) um array a outro, utilize a função COPY ARRAY.