# Especiais e Variáveis Globais Incorporadas

Os especiais são funções que são processadas pelo &kommander;. Você deverá saber que, até o &kommander; ter um processador completo, todos os especiais do &kommander; serão executados primeiro e só então o programa será executado. Na maioria dos casos isto não será um problema, mas em alguns deles será.

`@dcop(`idApl`, `objecto`, `função`, `argumentos`)`

- Faz uma chamada de &DCOP;. @dcop(kmail, KMailIface, checkMail(), )

`@dcopid`

- O ID de &DCOP; do processo. (kmdr-executor-@pid)

`@dialog(`janela`[,`parâmetros`])`

- Lança a janela do Kommander indicada. A janela é vista na pasta da janela e na pasta actual - por esta ordem. Isto antecede a chamada ao executor e muda a pasta por omissão para a pasta onde o ficheiro do Kommander se encontra. Os parâmetros podem ser passados da forma normal do Unix ou você poderá passar parâmetros com nomes no formato variavel=valor. Você poderá então encontrar os parâmetros passados na lista de variáveis globais. O @global(variavel) iria devolver valor.

`@env(`variavelAmbiente`)`

- Expande-se para a variável de ambiente. O @env(PWD) expande-se para o $PWD. Lembre-se que o $ faz parte da linha de comandos e não deverá ser usado.

`@exec(`comando`)`

- devolve o resultado de executar o comando indicado. @exec(ls -l).

`@execBegin ... @execEnd`

- o mesmo que o `@exec`, mas suporta o 'shebang' e 'scripts' de várias linhas. Isto serve para várias linguagens de programação, declarando-as ou utilizando um 'shebang'.

  - `@execBegin(php)`

  - `@execBegin`#!/usr/bin/php

  O primeiro usa o nome do executável do PHP. O &kommander; procura na PATH pelo php e, se não for encontrado, verifica se está registado no &kommander; numa localização fora da sua PATH. Se não estiver, diz ao utilizador que não pôde ser encontrado. O segundo exemplo usa o clássico shebang, o qual poderá ter alguns benefícios, assim como alguns problemas. Se você tiver uma versão beta do PHP5, por exemplo, no `/usr/local/bin`, a mesma não seria encontrada porque iria obter primeiro a versão em `/usr/bin`. Se, por outro lado, você distribuir a janela para alguém que tenha o PHP no `/usr/local/bin` apenas, ela não seria encontrada com o 'shebang' usado. Por isso, usar 'shebangs' deverá necessitar de cuidado e a utilização do executável é recomendada se estiver a partilhar ficheiros.

`@global(`variável`)`

- expande para o valor da variável global indicada.

`@null`

- Devolve um valor nulo. Agora que o Kommander verifica pelo 'widgetText' vazio durante a execução, isto irá evitar erros no caso de um estado indefinido de um elemento.

`@parentPid`

- O &PID; do processo-pai.

`@pid`

- O &PID; do processo.

`@readSetting(`chave`, `valorPorOmissao`)`

- lê um valor do `kommanderrc`

`@selectedWidgetText`

- O conteúdo seleccionado de um elemento gráfico que possa mostrar mais do que um valor, como por exemplo as listas

`@setGlobal(`variável`, `valor`)`

- Configura a variável global para o valor indicado.

`@widgetText`

- o conteúdo de um elemento

`@writeSetting(`chave`, `valor`)`

- grava o valor no `kommanderrc`

## Grupo de Funções de Listas

`@Array.values(`lista`)`

- Devolve uma lista separada por EOL's de todos os valores da lista. Pode ser usada para percorrer uma lista.

`@Array.keys(`lista`)`

- Devolve uma lista separada por EOL's de todas as chaves da lista.

`@Array.setValue(`lista`, `chave`, `valor`)`

- Define um chave e um valor para um elemento da lista. Se não existir nenhuma lista, esta é criada.

`@Array.clear(`lista`)`

- Remove todos os elementos da lista.

`@Array.count(`lista`)`

- Devolve o número de elementos na lista.

`@Array.value(`lista`,`chave`)`

- Devolve o valor associado à chave indicado.

`@Array.remove(`lista`,`chave`)`

- Remove o elemento com a chave indicada da lista.

`@Array.fromString(`lista`,`texto`)`

- Adiciona todos os elementos do texto na lista. O texto deverá ter o formato chave\tvalor\n.

`@Array.toString(`lista`,`texto`)`

- Devolve todos os elementos na lista num formato chave\tvalor\n.

## Grupo de Funções de Ficheiros

`@File.read(`ficheiro`)`

- Devolve o conteúdo do ficheiro indicado.

`@File.write(`ficheiro``texto`)`

- Escreve o texto indicado num ficheiro.

`@File.append(`ficheiro``texto`)`

- Adiciona o texto indicado ao fim de um ficheiro.

## Grupo de Funções de Cadeias de Caracteres

`@String.length(`texto`)`

- Devolve o número de caracteres no texto.

`@String.contains(`texto`,`sub-texto`)`

- Verifica se o texto contém o sub-texto indicado.

`@String.find(`texto`)`

- Devlve a posição de um sub-texto no texto ou -1 se não for encontrado.

  Este terá um parâmetro opcional de posição inicial para procurar as próximas instâncias na versão Alpha 6.

`@String.left(`texto`, `num`)`

- Devolve os primeiros 'num' caracteres do texto.

`@String.right(`texto`, `num`)`

- Devolve os últimos 'num' caracteres do texto.

`@String.mid(`texto`, `inicio`, `fim`)`

- Devolve uma sub-sequência do texto, delimitada pelas posições indicadas.

`@String.remove(`texto`, `sub-texto`)`

- Remove todas as ocorrências de um dado sub-texto.

`@String.replace(`texto`, `original`, `substituicao`)`

- Substitui todas as ocorrências de um dado sub-texto por outro de substituição.

`@String.upper(`texto`)`

- Converte o texto para maiúsculas.

`@String.lower(`texto`)`

- Converte o texto para minúsculas.

`@String.compare(`texto1`, `texto2`)`

- Compara dois textos. Devolve 0 se forem iguais, -1 se o primeiro texto for menor ou 1 se o primeiro texto for maior

`@String.isEmpty(`texto`)`

- Verifica se o texto está em branco.

`@String.isNumber(`texto`)`

- Verifica se o texto é um número válido.

## Globais Incorporados

Os globais incorporados são acedidos como se fossem variáveis globais normais com o `@global`.

`@global(_KDDIR)`

- A directoria onde o diálogo actual se encontra.

`@global(_NAME)`

- O nome do diálogo