Ver Mensaje Individual
  #10  
Antiguo 17-07-2003
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Reputación: 22
gatosoft Va camino a la fama
Al igual que charly, yo tambien he creado una función parecida... bastante parecida....

Código:
TOpcionesFormateo=(ofIzquierda,ofDerecha,ofCentrado);
Código:
function FormatearCadena(pCadena:String;
                         pLongitud:Byte;
                         pOpcion:TopcionesFormateo;
                         pCaracter:Char=#32):String;
var i, vLongCadena:Integer;
Begin
 Result:=pCadena;

 vLongCadena:=Length(pCadena);
 if vLongCadena>pLongitud then
    Result:=copy(pCadena,1,pLongitud);    
                 //Trunca la cadena si es muy larga...


 Case pOpcion of
   ofIzquierda:Begin
                  if pLongitud>vLongCadena then
                   For i:=1 to (pLongitud-vLongCadena) do
                      begin
                        Result:=Result+pCaracter;
                      end; //for
               end;
   ofDerecha:Begin
               if pLongitud>vLongCadena then
                   For i:=1 to (pLongitud-vLongCadena) do
                      begin
                        Result:=pCaracter+Result;
                      end; //for
             end;
   ofCentrado:Begin
                  if pLongitud>vLongCadena then
                   For i:=1 to (pLongitud-vLongCadena) do
                      begin
                        if i mod 2= 0 then
                           Result:=pCaracter+Result
                        else
                           Result:=Result+pCaracter;
                      end; //for
              end;
 end; //Case

end;
Creo que tener una función asi es muy util y evita estar escribiendo codigo, haciendo calculos o molestandose en recordar un algoritmo o un grupo de instrucciones. Ademas, cuando se requiere hacer esta operacion para varios valores y repetidas veces, es mejor tener un codigo que haga legible nuestra programación.

(Acepto que utilizo nombres muy largos y soy un poco complicado, pero ese es mi estilo de documentación y me gusta.)


Funcionamiento:
===========


FormatearCadena('Prueba',20, ofIzquierda,'@');
'Prueba@@@@@@@@@@@@@@';

FormatearCadena('Prueba',20, ofDerecha,'@');
'@@@@@@@@@@@@@@Prueba';

FormatearCadena('Prueba',20, ofCentrado,'@');
'@@@@@@@Prueba@@@@@@@';

Yo no le recomendaria a Charly llamar a su procedimiento StrFill, pues podria haber una función nativa de delphi que ahora o en un futuro se llame asi.


Saludos a Todos...
Responder Con Cita