Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Unificar nombres y apellidos (https://www.clubdelphi.com/foros/showthread.php?t=68889)

dtomeysoto 13-07-2010 14:57:03

Unificar nombres y apellidos
 
Hola amigos, resulta que tengo en una tabla Paradox los nombres y apellidos de todos los empleados de la empresa y estos vienen de la siguiente forma:

Juan Perez Reyes
Jorge L. Nápoles Cabrera
ALBERTO GONZALES LUGO
Luis R Ramírez Oviedo
...

Necesito hacer una función a la cual le vaya pasando los nombres y me los devuelva de la primera forma, es decir cada palabra debe empezar en mayúsculas y continuar en minúsculas.

No tengo ningún problema en hacer la función y tal vez en el tiempo que llevo redactando este post ya la hubiera terminado pero quería saber si delphi cuenta con algo para salir de dudas.

Gracias.

ecfisa 13-07-2010 15:41:39

Hola.

En el link siguiente se trató un tema donde una de las propuestas, la de rgstuamigo, creo que es lo que buscas:

http://www.clubdelphi.com/foros/showthread.php?t=67467

Saludos.

dtomeysoto 13-07-2010 16:21:45

amigo, ya revisé el post pero no me sirve para lo que necesito. recuerda que ya toda la información está en una base de datos, solo tengo que recorrer la tabla en cuestión e ir aplicando la "función" para lograr el resultado que deseo.

Caro 13-07-2010 16:26:42

Cita:

Empezado por dtomeysoto (Mensaje 370190)
....................pero quería saber si delphi cuenta con algo para salir de dudas.

Hola dtomeysoto, que yo sepa delphi no cuenta con algo directo para hacer lo que quieres. Tienes que hacerte la función.

Código Delphi [-]
.......................................
 Ind, Posicion : Integer;
begin
 Ind := 1;
 Nombre := LowerCase(Nombre);
 Nombre[1] := UpCase(Nombre[1]);
 While PosEx(' ', Nombre, Ind)>0 do
  begin
   Posicion := PosEx(' ',Nombre, Ind)+1;
   Nombre[Posicion] := UpCase(Nombre[Posicion]);
   Ind := Posicion;
  end;
 .......................................
end;

Saluditos

ecfisa 13-07-2010 17:45:36

Cita:

Empezado por dtomeysoto (Mensaje 370202)
amigo, ya revisé el post pero no me sirve para lo que necesito. recuerda que ya toda la información está en una base de datos, solo tengo que recorrer la tabla en cuestión e ir aplicando la "función" para lograr el resultado que deseo.

Hola de nuevo, el link era sólo para aproximar una idea.:)

Basándome en código de rgstuamigo:
Código:

function FirstUp(APasar: string): string;
var
  i: Integer;
begin
  Result:= LowerCase(APasar);
  for i:= 1 to Length(APasar) do
  if ((i = 1) or (Result[i-1] = ' ')) and (Result[i] in ['a'..'z']) then
      Result[i]:= Upcase(Result[i]);
end;

Un ejemplo de uso:
Código:

procedure TForm1.Table1NameGetText(Sender: TField; var Text: String;
    DisplayText: Boolean);
begin
  Text:= FirstUp(TField(Sender).AsString);
end;

Saludos.

dtomeysoto 13-07-2010 18:10:13

Cita:

Empezado por Caro (Mensaje 370203)
Hola dtomeysoto, que yo sepa delphi no cuenta con algo directo para hacer lo que quieres. Tienes que hacerte la función.

Código Delphi [-]....................................... Ind, Posicion : Integer; begin Ind := 1; Nombre := LowerCase(Nombre); Nombre[1] := UpCase(Nombre[1]); While PosEx(' ', Nombre, Ind)>0 do begin Posicion := PosEx(' ',Nombre, Ind)+1; Nombre[Posicion] := UpCase(Nombre[Posicion]); Ind := Posicion; end; ....................................... end;


Saluditos

Gracias caro.


La franja horaria es GMT +2. Ahora son las 02:13:52.

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