Função para deixa a primeira letra em maiúscula
Boa Tarde :)
Estou usando uma função para deixa a primeira letra de um nome em MAIÚSCULA, sem alteras as preposições dos nomes do,das,dos...
Só que há um problema que não consegui resolver:
Essa função não faz uppercase na preposição ´e´, até ai tudo bem, mas tambem não faz upercase em palavras começadas em ´e´, sera que alguem poderia me dizer o que está errado? :oops:
Estou usando uma função para deixa a primeira letra de um nome em MAIÚSCULA, sem alteras as preposições dos nomes do,das,dos...
Só que há um problema que não consegui resolver:
Essa função não faz uppercase na preposição ´e´, até ai tudo bem, mas tambem não faz upercase em palavras começadas em ´e´, sera que alguem poderia me dizer o que está errado? :oops:
function UpperNome(const Nome: string): string; var x: Integer; lista: array[0..4] of string[03]; function NaoAchaPreposicao(Palavra: string): Boolean; var x: Integer; begin Result := True; for x := 0 to 4 do if Trim(Palavra) = lista[x] then Result := False; end; begin Result := Nome; lista[0] := ´das´; lista[1] := ´dos´; lista[2] := ´de´; lista[3] := ´do´; lista[4] := ´da´; Result := UpCase(Result[1]) + Copy(Result, 2, Length(Result)); for x := 2 to Length(Nome) do begin if Nome[x] = 32 then if Copy(Nome, x + 1, 1) <> ´e´ then if NaoAchaPreposicao(Copy(Nome, x + 1, 3)) then Result := Copy(Result, 1, x) + UpCase(Result[x + 1]) + Copy(Result, x + 2, Length(Result)); end; end;
Walterhqd
Curtidas 0
Respostas
Marco Salles
22/02/2009
Sugiro a Vc usar a função ja conhecida
ela irá te atender Bem
function Tform1.FormataNome(sNome: String): string; const excecao: array[0..5] of string = (´ da ´, ´ de ´, ´ do ´, ´ das ´, ´ dos ´, ´ e ´); var tamanho, j: integer; i: byte; begin Result := AnsiLowerCase(sNome); tamanho := Length(Result); for j := 1 to tamanho do // Se é a primeira letra ou se o caracter anterior é um espaço if (j = 1) or ((j>1) and (Result[j-1]=Chr(32))) then Result[j] := AnsiUpperCase(Result[j])[1]; for i := 0 to Length(excecao)-1 do result:= StringReplace(result,excecao[i],excecao[i],[rfReplaceAll, rfIgnoreCase]); end;
ela irá te atender Bem
GOSTEI 0
Dbergkamps10
22/02/2009
Tente assim:
Espero ter ajudado.
Att
Dalton
function UpperNome(const Nome: string): string; var x: Integer; lista: array[0..4] of string[03]; function NaoAchaPreposicao(Palavra: string): Boolean; var x: Integer; begin Result := True; for x := 0 to 4 do if Trim(Palavra) = lista[x] then Result := False; end; begin Result := Nome; lista[0] := ´das´; lista[1] := ´dos´; lista[2] := ´de´; lista[3] := ´do´; lista[4] := ´da´; Result := UpCase(Result[1]) + Copy(Result, 2, Length(Result)); for x := 2 to Length(Nome) do begin if Nome[x] = 32 then if Copy(Nome, x + 1, 1) <> ´ e ´ then if NaoAchaPreposicao(Copy(Nome, x + 1, 3)) then Result := Copy(Result, 1, x) + UpCase(Result[x + 1]) + Copy(Result, x + 2, Length(Result)); end; end;
Espero ter ajudado.
Att
Dalton
GOSTEI 0
Paullsoftware
22/02/2009
a função do Marcos é tranquila uso ela por aqui e funciona perfeitamente!!! :lol:
GOSTEI 0
Walterhqd
22/02/2009
A função do Marco Salles funcionou perfeitamente aqui :D e é bem mais simples que a minha :shock:
Muito obrigado Marco Salles, paullsoftware, dbergkamps10 por terem respondido meu tópico :mrgreen:
Muito obrigado Marco Salles, paullsoftware, dbergkamps10 por terem respondido meu tópico :mrgreen:
GOSTEI 0
Eduardo Silva
22/02/2009
só não deixa Ç minusculo ç
GOSTEI 0