Função para caixabaixa em char??
07/08/2004
0
Estou com o seguinte problema:
Preciso percorrer uma string e transforma-la em minuscula letra a letra:
para transformar em MAIUSCULA, eu utilizo a seguinte construção
for k := Length(Linha) do begin Linha[k] := UpCase(linha[K]); end;
Mas não estou conseguindo encontrar a função inversa..
Já tentei Lower(). AnsiStrLower(), StrLower(). o problema é que AnsiStrLower(), e StrLower() trabalhamcom Pchar e quanto utilizo
a construção do [b:105dbe9546]For[/b:105dbe9546], cada item da variavel linha é retornada como Char.. ai tenho a seguinte msg de erro:
[b:105dbe9546][Error] UString.pas(53): Incompatible types: ´Char´ and ´PChar´[/b:105dbe9546]
Se alguém puder me ajudar desde já agradeço
Fausto
Faustoalves
Posts
07/08/2004
Oscar Candido
Linha[k] := AnsiLowerCase(linha[K]);
Espero ter ajudado
um abraço
07/08/2004
Emerson Nascimento
// deve ser solicitado o primeiro elemento, visto que AnsiLowerCase()
// retorna uma string, mas Linha[k] espera um char
for k := 1 to Length(linha) do
    Linha[k] := AnsiLowerCase(linha[K])[1];
07/08/2004
Faustoalves
Não deu certo, na verdade estou com uma unit que converte o nome próprio para maiuscula desconsiderando as letras e silabas de junção de nomes, ex:
[b:0c609e4c6d]jose da silva[/b:0c609e4c6d] fica [b:0c609e4c6d]Jose da Silva[/b:0c609e4c6d]
Mas ela somente faz isto se toda a string já for minuscula estou convertendo uma base de dados e os nomes estão todos em maiusculas ai eu estou fazendo assim:
[b:0c609e4c6d]Se eu Chamar a função assim não funciona:[/b:0c609e4c6d]
ClienteFBNOMECLIENTE.Value := Proprio(ClienteDBFCLINOM.Value);
[b:0c609e4c6d]Mas se eu chamar a função assim funciona:[/b:0c609e4c6d]
ClienteFBNOMECLIENTE.Value := Proprio(LowerCase(ClienteDBFCLINOM.Value));
[b:0c609e4c6d]Observe que nesta ultima chamada eu utilizo o LowerCase[/b:0c609e4c6d](NomeCampo).
Mas o ideal seria inserir o LowerCase dentro da função que esta definita assim:
function Proprio(Letra: String):String ; begin // o ideal seria que aqui ele transformasse tudo em minuscula // Já tentei assim Letra := LowerCase(Letra); // e assim também for i := 1 to length(Letra) do Letraaux := AsiLowerCase(Letra[i])[1]; Letra := LetraAux; Em ambos os casos não funcionou...
Se alguém puder me dar uma dica desde já agradeço
Fausto
07/08/2004
G1b4
function Proprio(Letra: String):String ; var resultado:string; k: integer; begin resultado:=´´; for k:=1 to length(linha) do resultado:=resultado+AnsiLowerCase(Letra[k]); result:=resultado end;
:wink:
07/08/2004
Emerson Nascimento
// formata nome para iniciais em maiúsculas
function FormataNome(Texto: string): string;
const Excessao: array[0..5] of string = (´ de ´,´ do ´,´ da ´,´ dos ´,´ das ´,´ e ´);
var i: integer;
begin
    Result := Texto;
    if Texto = EmptyStr
    then exit;
    Result[1] := AnsiUpperCase(Result[1])[1];
    for i := 2 to Length(Result) do
        if Result[i-1] = ´ ´ then
            Result[i] := AnsiUpperCase(Result[i])[1]
        else
            Result[i] := AnsiLowerCase(Result[i])[1];
    for i := 0 to High(Excessao) do
        Result := StringReplace( Result,Excessao[i],Excessao[i],[rfReplaceAll,rfIgnoreCase] );
end;
Clique aqui para fazer login e interagir na Comunidade :)