Os símbolos de índice de cadeia são os seguintes: [[...]]
Estes símbolos são utilizados para determinar um caractere particular em uma cadeia. Esta sintaxe permite referenciar um caractere em um campo ou uma variável de tipo Alfa ou Texto.
Nota: a partir de 4D v13, não é possível visualizar os antigos símbolos em Mac OS, no editor de métodos (
≤...≥).
Se os símbolos de referência de caracteres aparecerem à esquerda do operador de atribuição (:=), um caractere é atribuído à posição referenciada na cadeia. Por exemplo, se vsNome não for uma cadeia vazia, a seguinte linha passa a ser o primeiro caractere de vsNome a maiúsculas:
If(vsNome#"")
vsNome[[1]]:=Uppercase(vsNome[[1]])
End if
Por outro lado, se os símbolos de referência aparecerem em uma expressão, devolvem o caractere (ao qual fazem referência) como uma cadeia de um caractere. Por exemplo:
If(vtText#"")
If(Character code(Substring(vtText;Length(vtText);1))=At sign)
End if
End if
If(vtText#"")
If(Character code(vtText[[Length(vtText)]])=At sign)
End if
End if
Quando utilizar os símbolos de referência de caracteres, deve endereçar aos caracteres existentes na cadeia da mesma forma que endereça os elementos de um array. Por exemplo se endereça o caractere 20 de uma variável de cadeia, esta variável DEVE conter pelo menos 20 caracteres.
- Não respeitar esta condição, em modo interpretado, não provoca um erro de sintaxe.
- Não respeitar esta condição, em modo compilado (sem opções), pode trazer uma corrupção de memória, se, por exemplo, escrever um caractere além do final de uma cadeia ou um texto.
- Não respeitar esta condição em modo compilado, provoca um erro quando o controle de execução for ativado. Por exemplo, ao executar o seguinte código:
vsAnyText:=""
vsAnyText[[1]]:="A":
provocará o seguinte erro:

O seguinte método de projeto coloca em maiúsculas o primeiro caractere de cada palavra do texto recebido como parâmetro e devolve o texto modificado:
$0:=$1$vlLen:=Length($0)
If($vlLen>0)
$0[[1]]:=Uppercase($0[[1]])
For($vlChar;1;$vlLen-1)
If(Position($0[[$vlChar]];" !&()-{}:;<>?/,.=+*")>0)
$0[[$vlChar+1]]:=Uppercase($0[[$vlChar+1]])
End if
End for
End if
Por exemplo, a linha:
ALERT(Capitalize text ("olá, meu nome é João da Silva e sou candidato a presidente!"))
Mostra o seguinte alerta:
