Dos cuestiones de C

Dos cuestiones de C

Postby manuramos » Fri Nov 24, 2006 9:04 pm

Este es el código en C que utilizo para escribir palabras sin accentos:

#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 = "ÁÉÍÓÚÜáéíóúü-,." ;
hasta = "AEIOUUaeiouu " ;
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, no obstante me surgen dos cuestiones que no consigo resolver.

1º) Indices

Con TLIB incluí esas funciones en Five.Lib para intentar utllizarlas a la hora de reindexar mis Bases de datos. funcionan muy bien en cualquier parte de mi programa, pero con los índices no cuela. Ni tal cual, ni como macro, ni nada... ¿Hay alguna forma de conseguirlo?

2º) Funciones Externas

Como veran, he tenido que rehacer las funciones ALLTRIM y UPPER porque no sé como utilizar las ya existentes en FW. ¿Alguien sabría decirme como hacerlo?

Por cierto, ahora que caigo, funcionaría: k = sizeof( nDesde ), no lo he intentado.

Muchas gracias por adelantado.
Nos Gusta Programar
manuramos
 
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

Return to FiveWin para CA-Clipper

Who is online

Users browsing this forum: No registered users and 7 guests