07 agosto 2007

Operaciones con cadenas de texto (I)

Delphi posee un amplio repertorio de funciones para el análisis y manipulación de cadenas de texto que nos harán la vida mucho más fácil una vez las conozcamos. Comencemos con ellas:

function AnsiCompareStr( const S1, S2: string ): Integer;

Esta función compara dos cadenas de texto carácter a carácter y nos dice si son iguales (diferencia mayúsculas y minúsculas). Si ambas cadenas son iguales devuelve un cero. Devolverá un 1 si la cadena S1 es superior a la cadena S2 y devuelve un -1 si la cadena S1 es inferior a la cadena S2. Veamos un ejemplo:

AnsiCompareStr( 'HOLA', 'HOLA' ) devuelve 0
AnsiCompareStr( 'HOLA', 'HOLa' ) devuelve 1
AnsiCompareStr( 'HOLa', 'HOLA' ) devuelve -1

¿Cuando se considera una cadena de texto superior a otra? Pues el orden es el siguiente:

Letras mayúsculas > Letras minúsculas
Letras minúsculas > Números

function AnsiCompareText( const S1, S2: string ): Integer;

Esta función es similar a AnsiCompareStr a diferencia de que no distingue entre mayúsculas y minúsculas. En el caso anterior:

AnsiCompareText( 'HOLA', 'HOLA' ) devuelve 0
AnsiCompareText( 'HOLA', 'HOLa' ) devuelve 0
AnsiCompareText( 'HOLa', 'HOLA' ) devuelve 0
AnsiCompareText( 'HOLA', 'HOLLA' ) devuelve -1
AnsiCompareText( 'HOLLA', 'HOLA' ) devuelve 1

El orden entre cadenas se define por:

Letras > Números

function AnsiContainsStr( const AText, ASubText: string ): Boolean;

Comprueba si la cadena ASubText esta dentro de la cadena AText. Por ejemplo:

AnsiContainsStr( 'DELPHI AL LIMITE', 'LIMITE' ) devuelve True
AnsiContainsStr( 'DELPHI AL LIMITE', 'LIMITe' ) devuelve False

function AnsiContainsText( const AText, ASubText: string ): Boolean;

Esta función es igual a AnsiConstainsStr salvo que no diferencia mayúsculas de minúsculas. Veamos un ejemplo:

AnsiContainsText( 'DELPHI AL LIMITE', 'LIMITE' ) devuelve True
AnsiContainsText( 'DELPHI AL LIMITE', 'LIMITe' ) devuelve True
AnsiContainsText( 'DELPHI AL LIMITE', 'LIMITES' ) devuelve False

function AnsiEndsStr( const ASubText, AText: string ): Boolean;

La función nos devuelve True si la cadena AText termina en la cadena ASubText. He aquí un ejemplo:

AnsiEndsStr( '.avi', 'C:\Archivos de programa\Emule\Incoming\pelicula.avi' ) devuelve True
AnsiEndsStr( '.AVI', 'C:\Archivos de programa\Emule\Incoming\pelicula.avi' ) devuelve False

Para este caso es mejor utilizar la función:

function AnsiEndsText( const ASubText, AText: string ): Boolean;

Esta función obtiene el mismo resultado que AnsiEndsStr pero sin diferenciar mayúsculas de minúsculas. En el caso anterior:

AnsiEndsText( '.avi', 'C:\Archivos de programa\Emule\Incoming\pelicula.avi' ) devuelve True
AnsiEndsText( '.AVI', 'C:\Archivos de programa\Emule\Incoming\pelicula.avi' ) devuelve True

Como vemos es ideal para comprobar extensiones de archivos.

En el próximo artículo seguiremos con muchas más funciones.

Pruebas realizadas en Delphi 7.

2 comentarios:

VENOM dijo...

Excelente aporte!


zalv-2

elpatas dijo...

Gracias, no conocia la ultima, me has ayudado mucho (Y)

Publicidad