Lo prometido es deuda.
He comenzado a redactar una especie de manual de bolsillo sobre las funciones contenidas en GH Freebrary. Decidí iniciar con las que son para el manejo de cadenas de caracteres, las cuales pertenecen a la unidad GHFStrings. En breve incluiré dicho manual en el paquete de descarga de la biblioteca, y conforme vaya agregando más información en el mismo publicaré el nuevo material en esta bitácora también.
En sus marcas, ¿listos? ¡fuera!
ghCased
Declaración que tiene:
Function ghCased (Const Value :String; Const Upper :Boolean) :String; Overload;
Descripción corta:
Convierte una cadena de caracteres al tamaño de letras indicado por el parámetro Upper (True = mayúsculas, False = minúsculas).
Ejemplo de uso:
{ Aseguramos que el nombre de una tabla esté en minúsculas sólo cuando la base de datos sea MySQL, en mayúsculas para los demás casos }
TableName := ghCased (TableName, Not (Server = 'MySQL'));
ghCased
Declaración que tiene:
Function ghCased (Const Value :String; Const ACase :TEditCharCase) :String; Overload;
Descripción corta:
Convierte una cadena de caracteres al tamaño de letras indicado por el parámetro ACase (ecNormal, ecUpperCase, ecLowerCase). Si ACase es ecNormal, devuelve la cadena dada tal como está.
Ejemplo de uso:
{ Asignamos a la variable Leyenda la palabra "nombre" seguida por el texto contenido en Edit1, todo bajo el tamaño de letras restringido de Edit1 para darle uniformidad }
Leyenda := ghCased ('Nombre: ', Edit1.CharCase) + Edit1.Text;
ghCased
Declaración que tiene:
Function ghCased (Const Value, Sample :String) :String; Overload;
Descripción corta:
Convierte una cadena de caracteres al tamaño de letras que tenga otra cadena (parámetro Sample). Si la cadena de muestra Sample tiene letras de ambos tamaños (mayúsculas y minúsculas), devuelve la cadena Value tal como está.
Ejemplo de uso:
{ Aseguramos que el texto de Edit2 esté bajo el mismo tamaño de letras que el texto de Edit1 }
Edit2.Text := ghCased (Edit2.Text, Edit1.Text);
ghCopy
Declaración que tiene:
Function ghCopy (Const Value :String; Const StartIndex :Integer) :String; Overload;
Descripción corta:
De una cadena de caracteres dada, devuelve la subcadena que va desde la posición StartIndex hasta el último carácter.
Ejemplo de uso:
{ Obtenemos el tipo de un componente sin el prefijo "T" de su clase }
CompType := ghCopy (Component.ClassName, 2);
ghCopy
Declaración que tiene:
Function ghCopy (Const Value :String; Const StartIndex, EndIndex :Integer) :String; Overload;
Descripción corta:
De una cadena de caracteres dada, devuelve la subcadena que va desde la posición StartIndex hasta la posición EndIndex.
Ejemplo de uso:
{ Dado el código "DE-97124/A2", obtenemos el número contenido en él desde la posición 4 hasta antes del sufijo "/A2", considerando que el número y ese sufijo pueden ser de longitud variable. }
Code := 'DE-97124/A2';
Number := ghCopy (Code, 4, Pos ('/', Code) - 1);
ghCorrelStr
Declaración que tiene:
Function ghCorrelStr (Const Values :Array Of String; Const Str :String; Const CompareType :TghStrCompare = ghstcInsensitive) :String;
Descripción corta:
De un arreglo de pares de cadenas de caracteres (Values), dada la cadena Str, devuelve la cadena que hace par con ella dentro del arreglo, es decir, su cadena correlativa. Devuelve como resultado la propia cadena Str si ésta no se encuentra dentro del arreglo Values.
Ejemplo de uso:
{ Obtenemos el nombre del producto asociado al fabricante HK-Software (IBExpert) }
Product := ghCorrelStr (['DT/Studio', 'Embarcadero', 'IBExpert', 'HK-Software', 'Magia Data', 'Sistemas GH'], 'HK-SOFTWARE');
ghCount
Declaración que tiene:
Function ghCount (Const Value :String; Const Chr :Char; Const StartIndex :Integer = 1; EndIndex :Integer = MaxInt) :Integer; Overload;
Descripción corta:
Devuelve el número de veces que aparece el carácter Chr dentro de la cadena Value, desde la posición StartIndex hasta la posición EndIndex.
Ejemplo de uso:
{ Si la clave del libro no lleva cuatro guiones }
If ghCount (ISBN, '-') <> 4 Then
ghCount
Declaración que tiene:
Function ghCount (Const Value :String; Const Chrs :TSysCharSet; Const StartIndex :Integer = 1; EndIndex :Integer = MaxInt) :Integer; Overload;
Descripción corta:
Devuelve el número de veces que aparece alguno de los caracteres del conjunto Chrs dentro de la cadena Value, desde la posición StartIndex hasta la posición EndIndex.
Ejemplo de uso:
{ Si el código contiene operadores matemáticos }
If ghCount (Code, ['+', '-', '*', '/']) > 0 Then
ghCountTo
Declaración que tiene:
Function ghCountTo (Const Value :String; Const Chr :Char; Const EndIndex :Integer) :Integer; Overload;
Descripción corta:
Devuelve el número de veces que aparece el carácter Chr dentro de la cadena Value, desde el inicio de la misma hasta la posición EndIndex.
Ejemplo de uso:
{ Obtenemos la cantidad de nombres de campos puestos y separados por punto y coma en la variable FieldNames, sin contar el punto y coma que se dejó al final de la cadena }
FieldNames := 'ID;FirstName;LastName;';
FieldCount := ghCountTo (FieldNames, ';', Length (FieldNames) - 1) + 1;
ghCountTo
Declaración que tiene:
Function ghCountTo (Const Value :String; Const Chrs :TSysCharSet; Const EndIndex :Integer) :Integer; Overload;
Descripción corta:
Devuelve el número de veces que aparece alguno de los caracteres del conjunto Chrs dentro de la cadena Value, desde el inicio de la misma hasta la posición EndIndex.
Ejemplo de uso:
{ Obtenemos la cantidad de operaciones matemáticas de esta fórmula, descartando el texto que inicia con "//" }
Formula := '((A + B) / C) - D // Precio especial';
Ops := ghCountTo (Formula, ['+', '-', '*', '/'], Pos ('//', Formula) - 1);
Espero que esta breve enumeración haya sido de su agrado e interés. Seguiré describiendo más funciones de la unidad GHFStrings en las próximas entregas. Admito que estas descripciones son breves, apenas para un manual de bolsillo, pero es un primer paso en la documentación de GH Freebrary.
No dejen de transmitirme sus opiniones. Sus comentarios son muy valiosos para mejorar lo que esta bitácora ofrece por medio de mis teclado y pensamiento. Me ofrezco a contestar todas las dudas que tengan respecto al uso de estas y otras funciones de la biblioteca.
Un abrazo encadenado.
Al González. :)
viernes 26 de diciembre de 2008
Suscribirse a:
Enviar comentarios (Atom)
0 comentarios:
Publicar un comentario en la entrada
Te invito a expresar tu opinión abierta y libremente (no es necesario que estés registrado). Vale el anonimato mientras no lo uses como trinchera.