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
.....