ASCII-ANSI
(Conversi�n de caracteres usando funciones API)
Fecha: 27/Dic/02 (25-Dic-02)
Autor: M.Armengot
C�digo para definir 2 funciones :
ASCIIaANSI(tx0)
y
ANSIaASCII(tx0)
que usan las funciones de la API para dar como resultado
los caracteres (de una cadena de texto arbitrario "tx0") convertidos,
con la 1�: de ASCII a ANSI, y con la 2�: de ANSI a ASCII
tomando como base el c�digo escrito originalmente por J.L.Soler
en esta misma secci�n (sin el que no habr�a sido tan f�cil este dise�o).A continuaci�n sigue el c�digo en Visual Basic:
#If Win32 Then 'Declaraci�n de funci�n API para convertir ASCII a ANSI Public Declare Function OemToChar Lib "User32" Alias "OemToCharA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long #Else Public Declare Function OemToAnsi Lib "Keyboard" (ByVal lpAnsiStr As String, ByVal lpOemStr As String) As Integer #End If #If Win32 Then 'Declaraci�n de funci�n API para convertir ANSI a ASCII 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 '--------------------------------------------------------------- Function ASCIIaANSI(tx0 As String) 'Funci�n que transforma una cadena tx0 de car ASCII, en otra tx2 de car ANSI ' usa una llamada a la funci�n del API de Windows: OemToChar(32 bits) � OemToAnsi(16 bits) Static tx1 As String 'se DECLARA para usar en #If: si no se DECLARA, en #If se eval�a como Empty Static tx2 As String 'se DECLARA para usar en #If: si no se DECLARA, en #If se eval�a como Empty tx1 = tx0 'Para no "manipular" tx0 DADO tx2 = Space(Len(tx0)) 'Rellena tx2 con la MISMA long que tx1(por imperativo de la API) #If Win32 Then k = OemToChar(tx1, tx2) 'k se usa por imperativo de la API (Valor devuelto: 1) #Else Call OemToAnsi(tx1, tx2) 'En 16 bits no devuelve nada #End If ASCIIaANSI = tx2 End Function Function ANSIaASCII(tx0 As String) 'Funci�n que transforma una cadena tx0 de car ANSI, en otra tx2 de car ASCII ' usa una llamada a la funci�n del API de Windows: CharToOem(32 bits) � AnsiToOem(16 bits) Static tx1 As String 'se DECLARA para usar en #If: si no se DECLARA, en #If se eval�a como Empty Static tx2 As String 'se DECLARA para usar en #If: si no se DECLARA, en #If se eval�a como Empty tx1 = tx0 'Para no "manipular" tx0 DADO tx2 = Space(Len(tx0)) 'Rellena tx2 con la MISMA long que tx1(por imperativo de la API) #If Win32 Then k = CharToOem(tx1, tx2) 'k se usa por imperativo de la API (Valor devuelto: 1) #Else Call AnsiToOem(tx1, tx2) 'En 16 bits no devuelve nada #End If ANSIaASCII = tx2 End Function