Mostrando entradas con la etiqueta string. Mostrar todas las entradas
Mostrando entradas con la etiqueta string. Mostrar todas las entradas

viernes, 17 de agosto de 2018

TEdit: rellenar con ceros u otro caracter.

La función AddChar incluida en la unidad StrUtils hace esto.

function AddChar(C: Char; const S: string; N: Integer): string; 

El primer parámetro es el caracter con el cual vamos a rellenar los espacios del string, el segundo parámetro es el string a rellenar y el tercero la cantidad de lugares a rellenar (lo normal es que sea la misma cantidad de caracteres del string).

Ejemplo: un TEdit para que el usuario ingrese el número de un comprobante y al abandonar el TEdit, el mismo complete con ceros a la izquierda. Nos valemos del método OnExit del TEdit:

procedure TForm1.edNroExit(Sender: TObject);
begin
  edNro.Text:=AddChar('0',edNro.Text,8);
end;


El edNro es la variable del tipo TEdit y la propiedad MaxLength es 8, el resto de las propiedades son las predefinidas por el IDE Lazarus.
En lugar de pasar el número 8 se podría pasar la propiedad edNro.MaxLength.

viernes, 15 de diciembre de 2017

Comprobar el contenido de un string

Muchas veces es necesario validar que una cadena de texto contenga solo ciertos caracteres, por ejemplo solo letras mayúsculas, minúsculas y números. Como todo hay mil formas de hacerlo, en este caso usaremos conjuntos, un ciclo FOR .. DO para recorrer el string, que de paso recordamos que su índice comienza con 1, y un condicional IF.. THEN. Todo esto, en una función que retornará True si el string contiene los caracteres "válidos" o False si alguno de ellos no cumple con la regla.

function ChequearContenido (const c:String) : Boolean;
var
  i:Integer;
begin
  for i:=1 to Length(c) do
    if not ( c[i] in ['A'..'Z', 'a'..'z', '0'..'9'] ) then Exit (False);
ChequearContenido:=True;
end;


Y todo sin siquiera la necesidad de recurrir a la definición de conjuntos.

miércoles, 6 de septiembre de 2017

Obtener el string de un enumerado

No existe algo así como EnumToStr pero desde luego hay formas sencillas de obtener o “convertir” (entre comillas) el valor en cadena de caracteres de un enumerado.

¿Cómo? Con el procedimiento Str.

Ejemplo:

Str ( ZQuery1.FieldDefs.Items[i].DataType, s );
showmessage(s)
;

A Str le pasamos el primer parámetro que es el enumerado y el segundo que es una variable del tipo string, ambos por referencia y el procedimiento asignará a la variable, en este caso “s” el valor string del enumerated.

procedure Str(var X: TNumericType[:NumPlaces[:Decimals]];var S: String)

Opcionalmente, se puede establecer el formato numérico, ya que Str también convierte tipos de datos numéricos, sean o no enumerados, aunque para los no enumerados hay funciones más completas y con la comodidad de ser funciones y no procedimientos.

Documentación de Str en Lazarus

Documentación de Str en Free Pascal

Convertir boolean a string

Si bien cualquier programador es capaz de hacer una función que reciba una variable del tipo boolean y devuelva una cadena de caracteres (string) en pocos minutos, ¿para que reinventar la rueda?

El título de esta entrada, en sí está mal, pues sabemos que en Pascal una variable no puede cambiar de type, pero se entiende.

BoolToStr se puede usar de dos formas:

BoolToStr ( variableBoolean )

De este modo retorna un ‘-1’ en caso de que la variable sea True o 0 (cero) si es False.

BoolToStr ( variableBoolean, 'Verdadero', 'Falso')

En cambio de esta forma podemos pasar los strings para cada valor, correspondiendo el primero para True y el siguiente para False. Estos parámetros son recibidos como const (constantes) por la función, como puede apreciarse en la wiki de FreePascal: BoolToStr.