O comando Compare strings retorna um valor negativo, zero ou positivo dependendo de se stringA for avaliada como menor, igual ou maior que stringB. No parâmetro stringA, passe um valor texto. No parâmetro stringB, passe um valor texto a ser comparado com stringA. Como padrão, Compare strings funciona como se o operador "<" (menor que) fosse usado. (Ver String operators). Isso pode ser modificado com o parâmetro opções. Pode passar uma constante ou uma combinação das constantes a seguir do tema Strings:
Aviso: Você não pode usar o caractere coringa @ com Compare strings. Por exemplo se passar "abc@" em stringA ou stringB o comando vai realmente avaliar a string "abc@" e não uma string "abc" mais qualquer caractere. Valores retornados O comando retorna os valores longint a seguir: Se quiser comparar as strings: $string1:="alpha Bravo charlie Delta Echo Fox-Trot" $result:=Compare strings($string1;$string2;sk char codes) $result:=Compare strings($string1;$string2;sk char codes+sk case insensitive) Os exemplos abaixo ilustram o impacto específico das opções no contexto da linguagem de dados japonês: Nota: a opção "Ordenação adequada para a pesquisa" (ver Comparação de texto) tem um impacto no comando Compare strings. Em particular, a "Marca sonora katakana-hiragana prolongada" ou "長音記号" se interpretará de forma diferente. O ajuste também impacta nas "marcas de iteração japonesas" como "ゝ" ou "ゞ". Por exemplo: $result:=Compare strings("いすず";"いすゞ") Page 2Position devolve a posição da primeira ocorrência de pesquisar em cadeia. Se cadeia não contiver pesquisar, devolve zero (0). Se Position localiza uma ocorrência de pesquisar, a função devolve a posição do primeiro caractere desta ocorrência em cadeia. Se pergunta pela posição de uma cadeia vazia dentro de uma cadeia vazia, Position devolve zero (0). O parâmetro comprEncont, se for passado, devolve o comprimento da cadeia atualmente encontrada pela pesquisa. Este parâmetro é necessário para poder gerir corretamente letras escritas com um ou mais caracteres (exemplo: æ ou ae, ß ou ss, etc.). Como padrão, o comando faz comparações globais que consideram particularidades linguísticas e letras que podem estar escritas com um ou mais caracteres (por exemplo æ = ae). Por outra parte, se não for diacrítica (a=A, a=à etc.) e não considera os caracteres "ignoráveis". Os caracteres ignoráveis incluem todos os caracteres do subset unicode CO Control (U+0000 a U+001F, ascii character control set) exceto os caracteres imprimíveis (U+0009 TAB, U+0010 LF, U+0011 VT, U+0012 FF e U+0013 CR). Para modificar este funcionamento, pode pasasr
Nota: em certos casos, usar o parâmetro * pode acelerar significativamente a execução do comando.
Advertência: não pode utilizar o caractere arroba @ com Position. Por exemplo, se passa "abc@" em pesquisar, o comando pesquisará a cadeia "abc@" e não por "abc" seguido de outros caracteres. Este exemplo ilustra o uso de Position. Os resultados, descritos nos comentários, são atribuídos à variável vlResult. vlResult:=Position("ll";"Bilhar") No exemplo abaixo, o parâmetro comprEncont permite pesquisar todas as ocorrências de "aegis" em um texto, sem importar como está escrito: $inicio:=1 No exemplo abaixo, se quiser encontrar todas as instâncias de uma string e substituí-la: var $lengthFound : Integer $string:="Hello Joelle and joel!" $find:="joel" $replace:="Joël" $option:=sk case insensitive+sk diacritic insensitive $p:=0 Repeat $p:=Position($find;$string;$p+1;$lengthFound;$option) If($p>0) $string:=Substring($string;1;$p-1)+$replace+Substring($string;$p+$lengthFound) End if Until($p<=0) Page 3O comando Substring devolve a parte de fonte definida por aPartirDe e numCars. O parâmetro aPartirDe indica o primeiro caractere da cadeia a devolver, e numCars define o número de caracteres a devolver. Se aPartirDe mais numCars é maior que o número de caracteres na cadeia ou se numCars não estiver especificado, Substring devolve todos os caracteres da cadeia a partir do caractere especificado por aPartirDe. Se aPartirDe for superior ao número de caracteres na cadeia, Substring devolve uma cadeia vazia (""). Atenção: quando se utiliza este comando em um contexto multi-estilo, deve converter os eventuais caracteres de fim de linha Windows ('\r\n') em caracteres de fim de linha simples ('\r') para que o processamento seja válido. Isto se deve ao mecanismo que normaliza os finais de linha 4D para ter certeza a compatibilidade multi-plataforma para os textos. Para obter mais informação, consulte Normalização automática de fins de linhas. Este exemplo ilustra a utilização de Substring. Os resultados são atribuídos à variável vsResult. vsResult:=Substring("08/04/62";4;2) O seguinte método de projeto adiciona os parágrafos que são encontrados no texto (passado como primeiro parâmetro) a uma array de tipo texto ou alfa (cujo ponteiro é passado como segundo parâmetro):
C_TEXT($1) C_POINTER($2) $vlElem:=Size of array($2->) Repeat $vlElem:=$vlElem+1 INSERT IN ARRAY($2->;$vlElem) $vlPos:=Position(Char(Carriage return);$1) If($vlPos>0) $2->{$vlElem}:=Substring($1;1;$vlPos-1) $1:=Substring($1;$vlPos+1) Else $2->{$vlElem}:=$1 End if Until($1="") Page 4Produto: 4D Tema: String Manual de linguagem 4D ( 4D v19) Page 5O comando String devolve em forma de cadeia alfanumérica a expressão de tipo numérica, Data, Hora, cadeia ou Booleana que se passa em expressão. Se não passar o parâmetro opcional formato, a string é devolvida no formato como padrão do tipo de dados correspondente. Se passa formato, pode definir o formato da string resultante. O parâmetro opcional horaComb adiciona uma hora a uma data em um formato combinado. Apenas pode ser utilizado quando o parâmetro expressao for uma data (ver abaixo). Expressões numéricas Se expressao for uma expressão numérica (Real, Inteiro, Inteiro longo), pode passar o formato da string opcional. Estes são alguns exemplos:
O formato é especificado da mesma forma que para um campo numérico em um formulário. Para maior informação sobre formatos numéricos, consulte a seção Formatos de saída do manual de Desenho de 4D. Igualmente pode passar o nome de um estilo personalizado em formato. O nome do estilo personalizado deve estar precedido pelo caractere “|”. Nota: a função String não é compatível com campos de tipo "Inteiro 64 bits" em modo compilado.Expressões de tipo Data Se expressao for de tipo Data, a string é devolvida no formato como padrão definido no sistema. Neste caso, também pode passar uma hora no parâmetro Horacomb. Este parâmetro lhe permite combinar uma data e uma hora com o objetivo de gerar marcadores de tempo de acordo com as normas em vigor (constantes ISO Date, ISO Date GMT e Date RFC 1123). Estes formatos são particularmente úteis no contexto dos processos XML e Web. O parâmetro horaComb apenas é utilizado quando o parâmetro expressao for uma data.
Estes são alguns exemplos de formatos simples (asumindo que a data atual é 2/29/2006): $vsResult:=String(Current date) Notas para os formatos combinados data/hora:
Expressões de tipo Hora Se expressao for do tipo Hora, a string é devolvida utilizando o formato como padrão HH:MM:SS. Pode passar no parâmetro formato uma das seguintes constantes do tema "Formatos de saída de hora"):
Notas:
Estes exemplos assumem que a hora atual 5:30 PM e 45 segundos: $vsResult:=String(Current time) Expressões de tipo string Se expressao for de tipo Alfa ou Texto, o comando devolve o mesmo valor que se passa no parâmetro. Isso pode ser útil particularmente em programação genérica utilizando ponteiros. Expressões de tipo Booleano Se expressao for de tipo Booleano, o comando devolve a string “True” ou “False” na linguagem da aplicação (por exemplo, “Vrai” ou “Faux” em uma versão francesa de 4D). Neste caso se for passado, o parâmetro formato será ignorado.
Expressões Null Se a expressão for avaliada como Null, o comando devolve a string "null". Isto é útil quando se esperar que o resultado de uma expressão (por exemplo, um atributo objeto) seja uma string, mesmo se puder ser null. Page 6O comando Time string retorna a string da expressão tipo hora que passou em segundos. O formato da string é HH:MM:SS. Se passar um número de segundos superior ao número de segundos que há em um dia (86 400), Time string continua adicionando horas, minutos e segundos. Por exemplo, Time string (86401) retorna 24:00:01. Nota: se necesitar o formato da string da expressão de tipo hora em uma variedade de formatos, utilize String. O exemplo a seguir mostra uma caixa de alerta com a mensagem, “46 800 segundos representam 13:00:00.” ALERT("46800 segundos representam "+Time string(46800)) Page 7
4D v19.1 Time
DescriçãoO comando Time retorna uma expressão de tipo Hora equivalente à hora especificada como uma string por horaString. O parâmetro horaString deve conter:
Nota: se a expressão valHora se avaliar como indefinida, Time devolve uma hora vazia (00:00:00). Isso é útil quando se espera que o resultado de uma expressão (por exemplo, um atributo objeto) seja uma hora, mesmo se puder ser indefinida. Exemplo 1O seguinte exemplo mostra uma caixa de alerta com a mensagem “1:00 P.M. = 13 horas 0 minutos”: ALERT("1:00 P.M. = "+String(Time("13:00:00");Hour Min)) Exemplo 2Pode expressar todo valor numérico como uma hora: vTime:=Time(10000) vTime2:=Time((60*60)+(20*60)+5200) Ver também ARRAY TIME Produto: 4D Tema: Datas e Horas Número 179
Descrição Exemplo 1 Exemplo 2 Criado por: < 4D v6 Modificado: 4D v14 Modificado: 4D v16 R5 Manual de linguagem 4D ( 4D v19) |