![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
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;
(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... |
|
#2
|
||||
|
||||
|
Hola!
Por si le interesa a alguien... Para repetir caracteres en una string está la función StringOfChar. Ejemplo: Código:
texto := 'HOLA' ;
texto := StringOfChar('@'', 10) + texto ;
// Texto se quedaría así: '@@@@@@@@@@HOLA'
![]() |
|
#3
|
||||
|
||||
|
Cita:
Gracias Nuria // Saludos |
|
#4
|
||||
|
||||
|
Cita:
. Ya suponía yo que a alguien más le interesaría saber de ella.Cita:
![]() |
|
#5
|
|||
|
|||
|
Hola a todos, otra posibilidad sería el uso de la función DupeString que quedaría mas o menos así:
Código:
texto := 'SALUDOS' ;
texto :=DupeString('0', 5) + texto ;
// Texto se quedaría así: '00000SALUDOS'
Saludos |
|
#6
|
||||
|
||||
|
¡Buen día a todos!
Cita:
Veo que empleas tipos de datos enumerados y parámetros opcionales (es bueno aprovechar las bondades de Object Pascal). También observo que prefijas los nombres de parámetros con una "p". No es mi estilo, pero en rutinas largas ayuda a distinguir las referencias a parámetros recibidos. Noto en ti algo de bibliotecario .En el mejor de los planes, me permito hacerte algunas sugerencias sobre la función FormatearCadena: Podrías hacer de tipo Integer el parámetro pLongitud, para permitir longitudes de cadenas mayores a 255 caracteres. También, sería práctico que el parámetro pOpcion fuese opcional, con un valor predeterminado de ofDerecha, considerando que la mayoría de las ocasiones se usaría la función para alargar una cadena de su extremo final (o cualquiera de los otros dos valores, según la evaluación que hagas de esto). Y algo que quizás cueste un poquitín más de trabajo, pero que valdría la pena: que el actual parámetro pCaracter fuera más bien un parámetro de tipo String, para poder especificar un relleno no uniforme, es decir, una cadena de caracteres como relleno, que no necesariamente sea una secuencia del mismo carácter, por ejemplo un patrón ':.:.:.:.:'. Lo que comentas de los nombres largos de funciones, puede solucionarse empleando un sistema de abreviaturas. Por ejmplo, tu servidor utiliza una regla general (con algunas útiles excepciones) de abreviatura a las primeras cuatro letras por palabra para los identificadores de programa que se forman por más de una palabra, pero si se trata del nombre de una rutina (función, procedimiento o método), utilizo las primeras cinco letras en la primera palabra, por ejemplo Function AbrirDocu...(Abrir Documento). Finalmente, te comento algo sobre el estándar de Borland de utilizar prefijos de dos letras minúsculas para las constantes de grupo (como dsInsert, dsEdit, dsBrowse, por ejemplo): Me encanta dicho estilo, que a diferencia del de Microsoft (WM_KEYDOWN, WM_COMMAND, WM_CAP_FILE_SET_CAPTURE_FILE ¡esta cosa realmente existe!), es más legible, fácil de escribir y, siento yo, significativo, ya que al estar el prefijo en minúsculas da una sensación congruente con la impresión que uno tiene de las costantes: que son valores sencillitos (pequeños). Sólo que yo utilizo tres letras minúsculas en lugar de dos, porque al analizar las constantes de Turbo Vision, hace algunos años, y ahora la actual VCL, noté que por falta de letras Borland comenzaba a repetir prefijos en diferentes grupos de constantes. Así que preferí adoptar un estándar derivado, que empleara tres letras minúsculas en lugar de dos.Espero esto sea de utilidad. Seguimos en contacto. Al González . |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|