Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Wolverine en 10 Agosto 2005, 08:31 am



Título: Codigo Ascii??
Publicado por: Wolverine en 10 Agosto 2005, 08:31 am
Hola estoy haciendo una pequeña aplicación que tiene que ver con los códigos ascii.
El problema es que caundo con la funcion chr(), ingreso como argumento cualquier número, este, me devuelve un caracter al perteneciente para dicho numero en el ascii.
Alguien sabe porque pasa esto??

Por Ej. El ascii de á es 160, en mi aplicación es algo asi como 225..


Título: Re: Codigo Ascii??
Publicado por: Slasher-K en 10 Agosto 2005, 08:58 am
No entiendo el problema, la función hace lo que tiene que hacer xD.

Si te referís a los caracteres mayores a 127 entonces es diferente, porque usa los caracteres de la página de código actual. Pero si decis lo que necesitás un poco más claro sería mejor.

Saludos.


Título: Re: Codigo Ascii??
Publicado por: Xpeed en 10 Agosto 2005, 09:11 am
lo que he entendido, es, que necesitas sacar el caracter "á" que en cod ascii es iwal al caracter 160, pero visual basic no lo toma como este caracter, lo toma como ninguno lamento no poder ayudarte, pues no tengo idea porque sucede, talvez, vb no acepte los acentos

un saludo.


Título: Re: Codigo Ascii??
Publicado por: {_The_Alwar_} en 13 Agosto 2005, 14:15 pm
que yo sepa la funcion chr hace eso, le metes un numero y te devuelve una letra, solo que a partir del 127 o 128 hay problemas... no se xk, dicen q xq es distinto del 128 hacia el 255 en diferentes sitios


Título: Re: Codigo Ascii??
Publicado por: Wolverine en 13 Agosto 2005, 20:03 pm
Yo se que a partir del código 128 varian los caracteres, pero no entiendo respecto a que varian.

Hice un programa en lenguaje Fox Pro 2.5 para DOS, corriendo el DOS en windows y funciona perfectamente.

Igualmente aunque varien los caracteres yo en windows en un editor de texto con las teclas ALT 160 me retorna la letra "á" y cuando corro mi programa realizado en VB los códigos cambian totalmente...

Yo creo que es algun tema interno de VB, ya que creo que los lenguajes de programación (en la mayoria) se usan los CodePoint (UNICODE), ¿puede ser que con CHR() me retorne un codepoint y no un ASCII?


Título: Re: Codigo Ascii??
Publicado por: Xpeed en 13 Agosto 2005, 20:13 pm
puede ser, pero de todas maneras para solucionar eso parcialmente se puede recurrir ala instruccion Asc() para saber el numero ascii valido en VBasic para el caracter que necesitamos....


un saludo.


Título: Re: Codigo Ascii??
Publicado por: Slasher-K en 14 Agosto 2005, 01:05 am
El problema es que VB usa la serie de caracteres Unicode, y lo que devuelve lo hace en Unicode. Para solucionar esto existe una función que se llama MultiByteToWideChar (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/unicode_17si.asp), que convierte el caracter desde la página de códigos del teclado a su equivalente ANSI.

La siguiente función devuelve el caracter ANSI del código de tecla especificado.

Código:
Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As String, ByVal cchMultiByte As Long, ByVal lpWideCharStr As String, ByVal cchWideChar As Long) As Integer

Const CP_OEMCP = 1

Function TranslateChar(KeyCode As Integer) As String
        Dim r&, sMultiByte$, sWideChar$

  sWideChar = String$(1, 0)
  sMultiByte = Chr$(KeyCode)
 
  r = MultiByteToWideChar(CP_OEMCP, 0&, sMultiByte, Len(sMultiByte), ByVal sWideChar, LenB(sWideChar))
 
  TranslateChar = sWideChar
End Function

Saludos.


Título: Re: Codigo Ascii??
Publicado por: Yikis en 18 Agosto 2005, 17:33 pm
Anhur muy buen apunte precisamente eso era lo que tanto estab buscando. Pues necesito imprimir desde VB una formato o planilla para una nomina como lo hace DOS y necesitaba caracteres  para hacer el cuadro. Y con esta solucion es suficientes. Gracias mi hermano.