Ansi a Ascii
(Convertir cadenas ANSI a ASCII)

Fecha: 13-Jul-97
Autor: J. L. Soler


From: "J. L. Soler" [email protected]
Date sent: Wed, 9 Jul 1997 20:45:44 +0200

Amigo Guille:

Te envio esta modesta contribuci¢n por si es de utilidad
para algún asíduo de tu págima Web.

El objetivo de la función es convertir texto a grabar, en un fichero de
texto para ser explotado bajo D.O.S.

Por ejemplo, remesas de recibos bancarios en Norma 19, que es el
caso al que yo lo he aplicado.

Las API declaradas convierten ANSI a "puritito" ASCII.


La función contenedora es bastante simple y no hay que
discurrir demasiado.

'Declaración de Funci¢n API para convertir ANSI a ASCII
#If Win32 Then
    Public Declare Function CharToOem Lib "User32" Alias "CharToOemA"
(ByVal lpszSrc As String, ByVal lpszDst As String) As Long
#Else
    Public Declare Function AnsiToOem Lib "Keyboard" (ByVal lpAnsiStr As
String, ByVal lpOemStr As String) As Integer
#End If
.....




'*************************************************************************
'Función contenedora de la llamada a la API de conversión de ANSI a ASCII.
'La variable NumCar sólo se usa por imperativo de la API.
'Debe rellenarse la variable Dest para que tenga
'la longitud que requieren los datos.
'La longitud de los datos viene dada en el parámetro Pos.
Public Function ANaAS(Texto As String, Pos As Long) As String

    Static Orig As String
    Static Dest As String
    Static NumCar As Long

    Orig = Texto
    Dest = Space(Pos)

#If Win32 Then
    NumCar = CharToOem(Orig, Dest)
#Else
    Call AnsiToOem(Orig, Dest)          	'En 16 bits no devuelve nada
#End If

    Carga = Dest

End Function




Forma de llamada
----------------
Se supone que se están grabando datos en un fichero de texto
Se supone que hay un fichero abierto
Se supone que hay un tipo de registro definido


.....
Reg2.CONCEP02 = ANaAS(variable_de_texto_a_convertir, longitud_de_los_datos)
Put #1, , Reg2
.....

ir al índice