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...