by manuramos » Wed Dec 13, 2006 10:31 am
Antonio, gracias por interesarte por mi problema.
Es una función para quitarle los accentos a las palabras: Ya lo colgué en otro post, pero iba detrás de una conversación sobre otro tema y como estás tan ocupado no lo habras podido leer.
Este es el código:
#include <winten.h>
#include <windows.h>
#include <clipapi.h>
LPSTR Mayusculas( LPSTR szText, WORD lSize )
{
int i = 0 ;
for( i=0; i < lSize; i++ )
{
if ( szText[i] >= 'a' && szText[i] <= 'z' )
szText[i] -= ( 'a' - 'A' ) ;
}
return( szText ) ;
}
LPSTR SinEspa( LPSTR szText, LPWORD pwLen )
{
WORD nDesde = 0 ;
WORD nHasta = *pwLen ;
while( szText[nDesde] == ' ' && nDesde < nHasta )
++nDesde ;
while( szText[nHasta-1] == ' ' && nHasta > nDesde ) // nHasta-1 PORQUE EMPIEZA POR 0
--nHasta ;
*pwLen = nHasta - nDesde ;
return szText+nDesde ;
}
CLIPPER TransDat( PARAMS ) // ( LPSTR cText, BOOL lMayusculas = .T.)
{
WORD hancho = _parclen( 1 ) ;
LPSTR cText = SinEspa( _parc( 1 ), &hancho ) ;
BOOL lMayus = IF( PCOUNT() == 1, TRUE, _parl(2) ) ;
LPSTR desde, hasta ;
int i,j,k ;
if( lMayus )
{
desde = "ÁÉÍÓÚÜáéíóúü-,." ; // Cuando lo quiero todo en Mayusculas, sustituyo el guión por un espacio
hasta = "AEIOUUAEIOUU " ; // Es necesario para reindexar los apellidos compuestos castellanos
k = 15 ;
}
else
{
desde = "ÁÉÍÓÚÜáéíóúü" ;
hasta = "AEIOUUaeiouu" ;
k = 12 ;
}
i = 0 ;
while( i < hancho )
{
for ( j=0; j < k; j++ )
{
if (cText[i] == desde[j])
{
cText[i] = hasta[j] ;
break ;
}
}
i++ ;
}
if ( lMayus )
_retclen( Mayusculas(cText, hancho), hancho ) ;
else
_retclen( cText, hancho ) ;
}
Funciona perfectamente, en cualquier parte del programa, salvo durante el reindexado (la función la metí en FIVE.LIB con TLIB) Me da el siguiente error:
"Error DBFNTX/1026 Error de anchura de datos"
Claro que no sé si es porque está mal programado o si es que FiveWin no admite funciones de terceros durante el reindexado.
Por otro lado, como veras, he tenido que rehacer las funciones ALLTRIM y UPPER porque no sé como utilizar las ya existentes en FW. La verdad es que tampoco he tenido mucho tiempo para experimentar.
Gracias.
Nos Gusta Programar