10 de marzo de 2010

Saber si una cadena dada, corresponde con un criterio

Algunas veces necesitamos saber si por ejemplo el nombre del archivo que nos da el usuario cumple con algun criterio para nombres que deseamos mantener.

Digamos:

Usuario="2002_123.Ext"
y nuestro criterio es:
Criterio ="????-???.*"
como saber si se cumple ?

Declare long PathMatchSpec IN "shlwapi.dll" string pszFile, string pszSpec

?PathMatchSpec("C:/dir/archivo.txt","*.t?t")
?PathMatchSpec("C:/dir/archivo.tft","*.t?t")
?PathMatchSpec("archivo.tft","*.t?t")
?PathMatchSpec("C:/dir/archivo.txr","*.t?t")
?PathMatchSpec("archivo.txr","*.t?t")

El Primer Parametro es la cadena que queremos comprobar con el criterio, que es el segundo parametro, en este caso puede tener cualquier cosa de nombre pero la extension debe empezar con t, la segunda letra no importa, la tercera debe ser t.

El archivo, puede o no existir, lo que esta api hace es realizar una busqueda como la que se hace en DOS con el dir, digamos DIR ???_*.txt

Lo cual nos devolveria todos los archivos que empiezen con 3 caracteres cualquiera, que el cuarto sea un "_", el resto no importaria, pero de extension TXT.

Jorge Mota