procedure SetLength( var S; NewLength: Integer );
Establece el tamaño de una cadena de texto o un array dinámico. Por ejemplo:
var
sTexto: String;
begin
sTexto := '123456789';
SetLength( sTexto, 4 );
end;
Después de ejecutar esto sTexto será igual a 1234 (hemos recortado la cadena).
También se utiliza para establecer el tamaño de un array dinámico antes de utilizarlo.
var
Valores: array of Integer;
begin
SetLength( Valores, 3 );
Valores[0] := 10;
Valores[1] := 20;
Valores[2] := 30;
// Ampliamos el tamaño del array
SetLength( Valores, 5 );
Valores[3] := 40;
Valores[4] := 50;
end;
procedure SetString( var S: string; Buffer: PChar; len: Integer );
El procedimiento SetString fija la longitud de la cadena S antes de copiar el número de caracteres determinado por len de la cadena Buffer. Vamos a ver un ejemplo que copia el contenido de un array de caracteres a un string:
var
Original: array[1..3] of char;
sDestino: String
begin
Original[1] := 'A';
Original[2] := 'B';
Original[3] := 'C';
SetString( sDestino, PChar( Addr( Original ) ), 3 );
end;
Ahora la variable sDestino vale 'ABC'.
function StringOfChar( Ch: Char; Count: Integer ): string;
Esta función devuelve una nueva cadena de texto creada con el carácter Ch y repetido tantas veces como determine el parámetro Count. Por ejemplo:
StringOfChar( '0', 5 ) devuelve 00000
StringOfChar( 'A', 6 ) devuelve AAAAAA
Esta función viene bien para completar con ceros por la derecha o por la izquierda los números que se pasan a formato texto.
function StringReplace( const S, OldPattern, NewPattern: string; Flags: TReplaceFlags ): string;
Esta función devuelve una cadena de texto reemplazando las subcadenas encontradas dentro de la cadena S que coincidan con OldPattern y serán sustituidas por la cadena NewPattern. Los valores del parámetro Flags pueden ser:
rfReplaceAll: reemplaza todas las cadenas encontradas
rfIgnoreCase: no distingue mayúsculas de minúsculas
Por ejemplo:
StringReplace( 'CAMBIANDO-EL-TEXTO', '-', '.', [] ) devuelve:
CAMBIANDO.EL-TEXTO
StringReplace( 'CAMBIANDO-EL-TEXTO', '-', '.', [rfReplaceAll] ) devuelve:
CAMBIANDO.EL.TEXTO
StringReplace( 'CAMBIANDO EL TEXTO', 'EL', 'mi', [rfReplaceAll,rfIgnoreCase] ) devuelve:
CAMBIANDO mi TEXTO
StringReplace( 'CAMBIANDO EL TEXTO', 'EL', 'mi', [rfReplaceAll] ) devuelve:
CAMBIANDO mi TEXTO
StringReplace( 'cambiando el texto', 'EL', 'mi', [rfReplaceAll] ) devuelve:
cambiando el texto
StringReplace( 'cambiando el texto', 'EL', 'mi', [rfReplaceAll,rfIgnoreCase] ) devuelve:
cambiando mi texto
function StrScan( const Str: PChar; Chr: Char ): PChar;
Devuelve un puntero al primer carácter que encuentre dentro de la cadena Str. Por ejemplo:
StrScan( 'BUSCANDO UN CARÁCTER', 'T' ) devuelve TER
StrScan( 'BUSCANDO UN CARÁCTER', 'U' ) devuelve USCANDO UN CARÁCTER
function StuffString( const AText: string; AStart, ALength: Cardinal; const ASubText: string ): string;
Esta función devuelve la cadena AText insertando dentro de la misma ASubText en la posición AStart y con la longitud ALength (aunque realmente no inserta sino que es una sustitución del texto que hay en esa misma posición). Veamos un ejemplo:
StuffString( 'INSERTANDO UN TEXTO EN UNA CADENA', 12, 2, 'EL' ) devuelve:
INSERTANDO EL TEXTO EN UNA CADENA
StuffString( 'INSERTANDO UN TEXTO EN UNA CADENA', 12, 15, 'UNA' ) devuelve:
INSERTANDO UNA CADENA
Si nos fijamos en el segundo ejemplo hemos sustituido UN TEXTO EN UNA por UNA (15 caracteres).
function Trim( const S: string ): string; overload;
function Trim( const S: WideString ): WideString; overload;
La función Trim devuelve la cadena S eliminando los espacios en blanco y los caracteres de control que halla a la izquierda y derecha (pero no en medio). Por ejemplo:
Trim( ' ESTO ES UNA PRUEBA ' ) devuelve 'ESTO ES UNA PRUEBA'
function TrimLeft( const S: string ): string; overload;
function TrimLeft( const S: WideString ): WideString; overload;
Esta función es similar a Trim salvo que sólo elimina los espacios en blanco y caracteres de control por la izquierda. Por ejemplo:
TrimLeft( ' ESTO ES UNA PRUEBA ' ) devuelve 'ESTO ES UNA PRUEBA '
function TrimRight( const S: string ): string; overload;
function TrimRight( const S: WideString ): WideString; overload;
Esta función es igual a Trim salvo que sólo elimina los espacios en blanco y caracteres de control por la derecha. Por ejemplo:
TrimRight( ' ESTO ES UNA PRUEBA ' ) devuelve ' ESTO ES UNA PRUEBA'
function UpCase( Ch: Char ): Char;
Convierte un carácter a mayúsculas. Por ejemplo:
UpCase( 'a' ) devuelve A
UpCase( 'ú' ) devuelve ú
Como vemos en el segundo ejemplo no funciona correctamente con caracteres Ansi. Mejor utilizar en su lugar la función AnsiUpperCase.
function UpperCase( const S: string ): string;
Convierte la cadena S a mayúsculas. Por ejemplo:
UpperCase( 'Hola' ) devuelve HOLA
UpperCase( 'Programación en Delphi' ) devuelve PROGRAMACIóN EN DELPHI
El segundo ejemplo no respeta las vocales con tilde. Mejor utilizar AnsiUpperCase.
function WrapText( const Line, BreakStr: string; nBreakChars: TSysCharSet; MaxCol: Integer ):string; overload;
function WrapText( const Line, MaxCol: Integer = 45 ):string; overload;
La función WrapText parte la cadena Line en múltiples líneas de texto separadas por defecto con los caracteres de control #13 y #10, en tamaños máximos de palabra definidos por MaxCol. Veamos algunos ejemplos:
WrapText( 'Partiendo una cadena de texto', 15 ) devuelve
Partiendo una
cadena de texto
WrapText( 'Partiendo una cadena de texto', 10 ) devuelve:
Partiendo
una
cadena de
texto
WrapText( 'Partiendo una cadena de texto', 5 ) devuelve:
Partiendo
una
cadena
de
texto
Es decir, parte la cadena en frases cuyo tamaño máximo es definido por MaxCol pero respetando en ancho de cada palabra (aunque se pase del límite). También podemos definir con que caracteres vamos a separar las palabras así como que deseamos de separador. Si quisieramos separar la frase mediante por punto sería de la siguiente manera:
WrapText( 'Partiendo.una.cadena.de.texto', '-', ['.'], 5 ) devuelve
Partiendo.-una.-cadena.-de.-texto
Hemos definido el separador (quitando #13 y #10) y también le hemos indicado el carácter que divide cada palabra (el punto).
Con esto finalizan las funciones de manipulación de texto.
Pruebas realizadas en Delphi 7.
1 comentario:
Muy buena la explicacion. Gracias !!!
Publicar un comentario