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 06-05-2008
shoulder shoulder is offline
Miembro
 
Registrado: abr 2008
Posts: 441
Poder: 17
shoulder Va por buen camino
Convertir un cadena donde cada Palabra Primera con mayuscula

Una pregunta cual es la funcion en delphi donde de una cadena de dos o tres palabras me convierta la primera letra de cada palabra en mayuscula y luego la palabra en minuscula como la funcion strconv de access.

Gracias
Responder Con Cita
  #2  
Antiguo 06-05-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No recuerdo haber visto una función así en delphi. Prueba a ver si ésta da el ancho:

Código Delphi [-]
function Capitalize(S: String): String;
var
  I: Integer;
  InBetween: Boolean;

begin
  Result := '';
  InBetween := true;

  for I := 1 to Length(S) do
    if S[i] = ' ' then
    begin
      Result := Result + S[i];
      InBetween := true;
    end
    else if InBetween then
    begin
      Result := Result + UpCase(S[i]);
      InBetween := false;
    end
    else
      Result := Result + LowerCase(S[i]);
end;

// Saludos
Responder Con Cita
  #3  
Antiguo 06-05-2008
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Yo tampoco recuerdo una función que haga eso y también propongo una función, para el caso:

Código Delphi [-]
 
function Capitalize(S: String): String;
var
  ListaVar: TStringList;
  Cadena  : String;
  i:  Integer;
begin
  ListaVar      :=  TStringList.Create;
  Result     :=  '';
  try
    ExtractStrings([' '],[' '], PCHAR(S), ListaVar);
    for I := 0 to ListaVar.Count - 1 do
    begin
      Cadena      :=  ListaVar[i];
      Cadena      :=  LowerCase(Cadena);
      Cadena[1]   :=  UpCase(Cadena[1]);
      Result   :=  Result + Cadena  + ' ';
    end;
    SetLength(Result, Length(Result)-1);
  finally
    ListaVar.Free;
  end;
end;
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #4  
Antiguo 06-05-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Estas subastas de código son fantásticas, yo pongo el mío;

Código Delphi [-]
function Capitalize(Str: string): string;
var Index: Cardinal;
begin
 for Index := 1 to Length(Str) do
  if (Index = 1) or (Str[Index - 1] = ' ') then
   if Str[Index] in ['a'..'z'] then
    Dec(Str[Index], 32) else // verdad que parecería que sobra ese "else" ?
  else
   if Str[Index] in ['A'..'Z'] then
    Inc(Str[Index], 32);
 Result := Str;
end;
Responder Con Cita
  #5  
Antiguo 07-05-2008
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Bueno, lo que me parece curioso es que aunque no es difícil de incluir, ninguna de las tres funciones tienen en cuenta los caracteres especiales, tales como la Ñ o las mayúsculas con tildes .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/

Última edición por jhonny fecha: 07-05-2008 a las 00:09:23.
Responder Con Cita
  #6  
Antiguo 07-05-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cierto (SP), la corrijo:

Código Delphi [-]
function Capitalize(Str: string): string;
var Index: Cardinal;
begin
 for Index := 1 to Length(Str) do
  if (Index = 1) or (Str[Index - 1] = ' ') then
   if Str[Index] in ['a'..'z','á','é','í','ó','ú','ñ'] then
    Dec(Str[Index], 32) else
  else
   if Str[Index] in ['A'..'Z','Á','É','Í','Ó','Ú','Ñ'] then
    Inc(Str[Index], 32);
 Result := Str;
end;

Saludos
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Convertir numero en cadena rex JAVA 7 25-10-2007 03:28:11
convertir cadena hexadecimal a imagen Barzaugc SQL 3 20-09-2006 16:06:44
Buscar un palabra dentro de una cadena eyscom Varios 6 29-07-2006 00:05:05
Convertir una cadena Ganduke Varios 6 28-12-2005 14:03:16
convertir una cadena de caracteres a un enteros dmagui Firebird e Interbase 2 05-08-2005 17:39:16


La franja horaria es GMT +2. Ahora son las 08:48:50.


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