Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-10-2005
Tangela Tangela is offline
Miembro
 
Registrado: may 2003
Posts: 18
Poder: 0
Tangela Va por buen camino
Unhappy Primea Letra En Mayúscula

Hola a todos:
Pues lo que necesitaría es una rutina que me permita poner en mayúscula la primera letra de cada palabra de un string dado que está en minúsculas.

Y de paso, ¿alguien sabe como conseguir que al pasar de mayúsculas a minúsculas con la funcion LowerCase() se conviertan también las Ñ y los Ó,Á, etc...?
Responder Con Cita
  #2  
Antiguo 31-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

A ver si este par de funciones te apañan:

Código Delphi [-]
{ ············································································ }
 
 function Capitalizar(const cadena: string): string;
 var
   s: string;
   i: integer;
   b: boolean;
 begin
   s := '';
   b := true;
   for i := 1 to Length(cadena) do
   begin
     if b then
       s := s + AnsiUpperCase(cadena[i])
     else
       s := s + cadena[i];
     b := (cadena[i] = ' ');
   end;
   Result := s;
 end;
 
 { ············································································ }
 
 function CapitalizarFrase(const frase: string) : string;
 var
   i: integer;
   up: boolean;
 begin
   up := true;
   Result := frase;
   for i := 1 to Length(frase) do
   begin
     if up then
       Result := Result + AnsiUpperCase(frase[i])
     else
       Result := Result + AnsiLowerCase(frase[i]);
     up := frase[i] = ' ';
     if up and (Length(frase) >= (i + 2)) and
       (frase[i+2] = ' ') then up := false;
   end;
 end;
 
 { ············································································ }
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 31-10-2005
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Yo lo hago con la funcion StuffString de la unidad StrUtils :

Código:
StuffString(s,1,1,UpperCase(LeftStr(s,1)));
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #4  
Antiguo 01-11-2005
Tangela Tangela is offline
Miembro
 
Registrado: may 2003
Posts: 18
Poder: 0
Tangela Va por buen camino
Talking Funciona, gracias

Código Delphi [-]
 
{ ············································································ }
 
 function CapitalizarFrase(const frase: string) : string;
 var
   i: integer;
   up: boolean;
 begin
   up := true;
   Result := frase;
   for i := 1 to Length(frase) do
   begin
     if up then
       Result := Result + AnsiUpperCase(frase[i])
     else
       Result := Result + AnsiLowerCase(frase[i]);
     up := frase[i] = ' ';
     if up and (Length(frase) >= (i + 2)) and
       (frase[i+2] = ' ') then up := false;
   end;
 end;
 
 { ············································································ }

Muchas gracias, es justo lo que necesitaba. Unicamente he tenido que hacer la siguiente modificación para que funcione perfecto:
en lugar de
Código Delphi [-]
Result := frase;
Puse:
Código Delphi [-]
Result := '';
porque de lo contrario el resultado de la función era la frase original más la frase capitalizada: por ejemplo: la frase originalLa Frase Capitalizada

Gracias, muchas gracias
Responder Con Cita
  #5  
Antiguo 01-11-2005
Avatar de yusnerqui
yusnerqui yusnerqui is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuba
Posts: 679
Poder: 21
yusnerqui Va por buen camino
Bueno ya el caso está resuelto, pero aporto otra solución para la base de datos de los foros haciendo uso de los TStrings.
Código Delphi [-]
function AsTitulo(Frase:String):String;
Var
  Lista : TStrings;
  i : integer;
  Temp : String;
begin
  Lista := TStringList.Create;
  Lista.Delimiter := ' ';
  Lista.DelimitedText := Frase;
  for i := 0 to Lista.Count - 1 do
  begin
    Temp := LowerCase(Lista[i]);
    Temp[1]:= UpCase(Temp[1]);
    Lista[i] := Temp;
  end;
  Result := Lista.DelimitedText;
  Lista.Free;
end;

Saludos
__________________
Lo importante no es llegar primero, sino saber llegar.

Para que puedas llegar mejor lee la Guia de Estilo


Última edición por yusnerqui fecha: 01-11-2005 a las 20:28:58.
Responder Con Cita
  #6  
Antiguo 02-11-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,


Cita:
Empezado por Tangela
Muchas gracias, es justo lo que necesitaba. Unicamente he tenido que hacer la siguiente modificación para que funcione perfecto:
en lugar de

Código Delphi [-]
 Result := frase;
Puse:

Código Delphi [-]
 Result := '';
porque de lo contrario el resultado de la función era la frase original más la frase capitalizada: por ejemplo: la frase originalLa Frase Capitalizada
Pues así es la verdad. Gracias a ti por informar del error, que he corregido en donde era menester.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 00:37:39.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi