rellenar una cadena con 0's??????
Hola compañeros,
me gustaria saber si hay alguna funcion, que me permita tratar una cadena, y rellenar con 0's los huecos hasta una determinada longitud. 1 Saludo. |
Prueba a adaptar este ejemplo:
Código:
procedure TForm1.Button1Click(Sender: TObject); |
Hola,
Yo he creado la siguiente función para mis desarrollos. function StrFill(cadena:string;longitud:Integer;relleno,posicion:string) : string; var cTemp:string; n, nVeces:Integer; begin cTemp := cadena; nVeces := longitud - length(cTemp); for n := 1 to nVeces do begin if ((posicion = 'D') or (posicion = 'd')) then cTemp := cTemp+relleno else cTemp := relleno+cTemp; end; Result := cTemp; end; Parametros : cadena = cadena inicial a tratar longitud = longitud final de la cadena relleno = caracter de relleno posicion = si (D ó d) rellena por la derecha, sino por la izquierda de la cadena pasada en CADENA. Espero te sirva. Un saludo. |
No sé muy bien a qué te refieres. Si quieres, por ejemplo escribir números anteponiendo ceros hasta completar un determinado númeo de caracterespuedes hacerlo con Format:
Código:
Format('%0.5d, [84]); // Escribe '00084' Código:
S := 'Mi perro es muy grande'; // Saludos |
La opcion de la funciona Format, me parece la mas apropiada, el problema que tengo, es que no se como pasarle como parametro una variable tipo 'string' en la que tengo el nº a formatear, es decir:
n:string; // entrada por telclado n := InputBox('Código:', 'Código', ''); n := Format('%0.6d', n); // el problema que la funcion Format, no permite un parametro string Sabria alguien como conseguir hacer que funcione esto? Muchas gracias y Saludos. |
algo así como
Código:
n := InputBox('Código:', 'Código', ''); ;) |
Perfecto! muchas gracias por tu ayuda.
1 Saludo desde Alicante (spain) |
No es necesaria la conversión ya que esa es labor de Format.
En lugar de Format('%0.6d', [StrToInt(n)]); simplemente se pone Format('%0.6s', [n]); Les recomiendo que lean la documentación de la función para saber el significado de los parámetros. // Saludos |
Al hacerlo de la forma que sugiere roman, sin embargo, podrias obtener algo así como
'00EstoNoEsUnNumero' que dependerá de vos si es válido o no... Hasta luego. ;) |
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; (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... |
Hola!
Por si le interesa a alguien... Para repetir caracteres en una string está la función StringOfChar. Ejemplo: Código:
texto := 'HOLA' ; |
Cita:
Gracias Nuria // Saludos |
Cita:
Cita:
|
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' ; Saludos |
¡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 :eek: ¡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 :). |
La franja horaria es GMT +2. Ahora son las 08:49:13. |
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