henry1 0 Denunciar post Postado Outubro 13, 2004 Olá Pessoal !! Sou novo aqui no Fórum e estou começando a aprender Delphi !!! Peço ajuda dos feras aqui e gostaria de saber para que servem as letras (não achei definição melhor) em vermelho: procedure ContaDigitos (S: String; var N: Integer); var I: Integer; begin N:= 0; for I := 1 to Length(S) do if S[I] in ['0'..'9'] then Inc(N); end; Obrigado !!!!!!!! Compartilhar este post Link para o post Compartilhar em outros sites
kartter 0 Denunciar post Postado Outubro 13, 2004 é o seguinte:este procedimento recebe duas variáveis como parâmetro:'S' como valor e 'N' por referência.Entaum se cria a variavel 'I', sendo do tipo inteiro;Dá o valor de 0 a variavel 'N', que veio como parâmetroEntra num loop que vai de 1 até o tamanho da string 'S' que veio como parâmetroEntaum verifica se alguma posicao da string e um numero de 0 a 9.Se for entaum ele incrementa a variavel 'N', dando o valor que ela tinha +1;Qualquer dúvida post de novo!falow!kartter Compartilhar este post Link para o post Compartilhar em outros sites
henry1 0 Denunciar post Postado Outubro 14, 2004 Valeu Kartter !!As coisas estão clareando, mas ainda to com algumas dúvidas !!!O tamanho da string 'S' em length, é o valor do ultimo caracter ou da soma de todos eles?Cada passada em for se soma 1 no "I" ?em if o "I" e usado como um indice indicando uma hora o primeiro caracter depois o segundo e assim por diante ?Obrigado !!!! Compartilhar este post Link para o post Compartilhar em outros sites
ultra 0 Denunciar post Postado Outubro 15, 2004 o lenght conta o tamanho da letra pela seguinte lógicaex: Palavra => P = 0 , a = 1 , l = 2 , a = 3 , v = 4 , r = 5 , a = 6Logo, no seu exemplo, o for I:= 1 to Lenght(S) , vai resultar em um loop de 1 à 6 ( se usar como exemplo a 'Palavra' )No seu exemplo está incorreto, pois o I deveria contar à partir do 0 e não do 1Toda vez q ele fecha o FOR, ele conta +1 na variável que você está usando como contador ( no seu caso, o I )Corrijam-me se eu estiver errado =) Compartilhar este post Link para o post Compartilhar em outros sites
henry1 0 Denunciar post Postado Outubro 15, 2004 Olá !! Ultra, na minha opnião depois de refletir sua resposta acredito que você está certo, apenas penso que no: for I := 1 to Length(S) do Pode-se começar com 1 sem problemas !! Uma ultima duvida, na linha: if S in ['0'..'9'] then o "S" significa o valor do string que no seu exemplo seria "palavra" ? o "I" funciona no "S" percorrendo todo os caracteres da string "palavra" ? Valeu !!! Compartilhar este post Link para o post Compartilhar em outros sites
ultra 0 Denunciar post Postado Outubro 15, 2004 Bom..... no caso do seu exemplo, se você começar o I sendo 1, você irá pular a primeira linha, pois no lenght o primeiro caractere é de valor 0 Vamos ao caso: procedure ContaDigitos (S: String; var N: Integer); var I: Integer; begin N:= 0; for I := 1 to Length(S) do if S in ['0'..'9'] then Inc(N); end; Oq irá acontecer aí em cima: ao chamar a procedure ContaDigitos(), o código vai receber o valor S por uma palavra, exemplo 'palavra' Ao primeiro FOR, se caso seja 1, vou traduzir como ficará: --------- Para I é 1 até N° de letras da 'palavra' faça Se 'palavra'[letra posição I] está contido entre [0 à 9] então Adiciona à N fim --------- logo, ao primeiro FOR, ele dirá q o I é 1, e mandará puxar da letra posição 1(no caso, é a segunda) =================== S ==== S(palavra) (posição) Mais uma vez, se eu estiver errado, me corrijam ! =) Compartilhar este post Link para o post Compartilhar em outros sites
henry1 0 Denunciar post Postado Outubro 16, 2004 Thanks !!!!!" Para I é 1 até N° de letras da 'palavra' façaSe 'palavra'[letra posição I] está contido entre [0 à 9] entãoAdiciona à Nfim "O que irá ser adicionado a N será o "valor 7" correspondente a sete caracteres de(palavra) ?Valeu !!!!! Compartilhar este post Link para o post Compartilhar em outros sites
ultra 0 Denunciar post Postado Outubro 17, 2004 nao nao, N é Integer, e alí está declarado como N:= 0....... ele acrescentará +1 ao N, oque torna a procedure conta digitos correta =)AbraçosULTRA Compartilhar este post Link para o post Compartilhar em outros sites
henry1 0 Denunciar post Postado Outubro 17, 2004 Olá !!!ex: Palavra => P = 0 , a = 1 , l = 2 , a = 3 , v = 4 , r = 5 , a = 6Então independente de quantos caracteres ele achar será somente acrescentado o valor mais 1 a "N" ??Thanks !!! Compartilhar este post Link para o post Compartilhar em outros sites
ultra 0 Denunciar post Postado Outubro 19, 2004 Então, à cada caractere que ele achar, irá acrescentar +1 à Nportanto, se a palavra for "carro", ele irá rodar o FOR 5 vezes ( no seu exemplo vai ser 4, pois o For I está incorreto como 1 ) Compartilhar este post Link para o post Compartilhar em outros sites
henry1 0 Denunciar post Postado Outubro 22, 2004 Obrigado ao Ultra e ao kartterque deram uma força, foi muitoútil !!!!!Valeu !!!! Compartilhar este post Link para o post Compartilhar em outros sites
®odrigo_$am 0 Denunciar post Postado Novembro 30, 2004 Oopa..E æ, estava lendo essa pekena discução.......mas fiquei sem entender...como eu coloco essa procedure pra funcionar...suponhamos qu eu queira que o meu código seja incrementado ....entaum eu usaria essa variável ?se sim, como eu a colocaria no meu dbcodigo?se n]ao como que eu faria isto entaum?vlw..fui. Compartilhar este post Link para o post Compartilhar em outros sites
ultra 0 Denunciar post Postado Dezembro 1, 2004 Oopa.. E æ, estava lendo essa pekena discução.......mas fiquei sem entender...como eu coloco essa procedure pra funcionar...suponhamos qu eu queira que o meu código seja incrementado ....entaum eu usaria essa variável ? se sim, como eu a colocaria no meu dbcodigo? se n]ao como que eu faria isto entaum? vlw.. fui. Oi Rodrigo É simples..... basta no seu projeto você chamar pelo nome da procedure. Exemplo: procedure Form.ContaDigitos (S: String; var N: Integer);varI: Integer;beginN:= 0;for I := 1 to Length(S) doif S[I] in ['0'..'9'] thenInc(N);end;Basta escrever no projeto:ContaDigitos (S,N); Sendo S - String, e N - Integer Abraços Compartilhar este post Link para o post Compartilhar em outros sites