Andreas,
A ver si te vale esto:
*
//--------------------------------------------------------------------------
//
// Mi oemtoansi para programas DOS
FUNCTION DOSOemToAnsi(cOem)
#Define CAD_OEM ;
"
¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëì
íîïðñòóôõö÷øùúûüýþÿ"
#Define ARR_ASC_ANSI ;
{164,182,167,199,252,233,226,228,224,229,231,234,235,232,239,238,236,196,197
,201,230,198,244,246,242,251,249,255,214,220,248,163,216,215,131,225,237,243
,250,241,209,170,186,191,174,172,189,188,161,171,187,166,166,166,166,166,193
,194,192,169,166,166,43,43,162,165,43,43,45,45,43,45,43,227,195,43,43,45,45,
166,45,43,164,240,208,202,203,200,105,205,206,207,43,43,166,95,166,204,175,2
11,223,212,210,245,213,181,254,222,218,219,217,253,221,175,180,173,177,61,19
0,182,167,247,184,176,168,183,185,179,178,166,160}
*
Local nI, nLen:= Len(cOem), nPos
Local cCad:= CAD_OEM, aCad:= ARR_ASC_ANSI
Local cAnsi:= "", cCar
FOR nI:= 1 TO nLen
cCar:= SubStr(cOem, nI, 1)
nPos:= At(cCar, cCad)
IF nPos> 0
cCar:= Chr(aCad[nPos])
ENDIF
cAnsi+= cCar
NEXT
RETURN cAnsi
//--------------------------------------------------------------------------
//
// Mi ANSITOOEM para programas DOS
FUNCTION DOSAnsiToOem(cAnsi)
*
Local nI, nLen:= Len(cAnsi), nPos
Local cCad:= CAD_OEM, aCad:= ARR_ASC_ANSI
Local coem:= "", cCar
FOR nI:= 1 TO nLen
cCar:= SubStr(cAnsi, nI, 1)
nPos:= aPosition(Asc(cCar), aCad)
IF nPos> 0
cCar:= SubStr(cCad, nPos, 1)
ENDIF
coem+= cCar
NEXT
RETURN cOem
*
*
*
Saludos
N:dlzc D:aol T:com (dlzc) escribió en mensaje ...
Post by N:dlzc D:aol T:com (dlzc)...
Post by Andreas MoroderI have to convert clipper strings with german and
italian special characters to a ANSI string. Does
a function similar to the windows OEMTOANSI( ) exist for
clipper ?
strtran() is the only one I know of. One invocation per letter
to be substituted.
David A. Smith