Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Psyke1 en 28 Julio 2010, 17:37 pm



Título: Caracteres Especiales en TextBox [Ayuda]
Publicado por: Psyke1 en 28 Julio 2010, 17:37 pm
¿Como hago para poder leer caracteres especiales en un TextBox?
Necesito agregar algo asi por ejemplo:
Citar
नमस्ते, आपका नाम क्या है

Muchas gracias :D

DoEvents¡! :P


Título: Re: Caracteres Especiales en TextBox [Ayuda]
Publicado por: Karcrack en 28 Julio 2010, 17:41 pm
Prueba con RitchTextBox :-\

rtcDoEvents@MSVBVM60! :P


Título: Re: Caracteres Especiales en TextBox [Ayuda]
Publicado por: Psyke1 en 28 Julio 2010, 17:49 pm
No funciona  :(
Me pasa igual... ademas la cosa es que no queria depender de OCX... :silbar:
Vi por ahi un modulo de Cobein, que hace algo similar, pero no encuentro un RichtTextBox.cls... :-(

PD: ¿De que vas copiandome el saludo?  >:( :laugh:

DoEvents¡! :P


Título: Re: Caracteres Especiales en TextBox [Ayuda]
Publicado por: Karcrack en 28 Julio 2010, 19:45 pm
No funciona  :(
Me pasa igual... ademas la cosa es que no queria depender de OCX... :silbar:
Vi por ahi un modulo de Cobein, que hace algo similar, pero no encuentro un RichtTextBox.cls... :-(
He estado leyendo, prueba a cambiar la Font del TextBox...

No te copio, solo me burlo >:D :laugh: :laugh: :laugh:


Título: Re: Caracteres Especiales en TextBox [Ayuda]
Publicado por: Psyke1 en 28 Julio 2010, 19:49 pm
Ya lo probe, y tampoco me funciona... :-(
Segun me dice xkiz:
Citar
tenes que convetir el texto a UTF-8
Alguna idea de como hacer esto?¿  :silbar:

Sleep¡! :-*


Título: Re: Caracteres Especiales en TextBox [Ayuda]
Publicado por: seba123neo en 29 Julio 2010, 06:09 am
es por los unicode...

Citar
Visual Basic se basa internamente en el estándar Unicode de doble byte. Sin embargo, fuera del mundo de Visual Basic, se sigue utilizando el modelo ANSI de un bit. Por esta razón, Visual Basic proporciona dos conjuntos de controles de formularios y utiliza los conjuntos ANSI como control predeterminado. Cualquier cadena que se pase al conjunto ANSI de controles de formularios se convierte de su representación Unicode interna a su representación ANSI y las cadenas UNICODE no se mostrarán correctamente. Para poder mostrar la cadena UNICODE en un formulario de Visual Basic, deben utilizarse los controles UNICODE (Forms 2.0). En el ejemplo siguiente se ilustra cómo utilizar los controles de Forms 2.0 para mostrar cadenas UNICODE obtenidas de un archivo de texto Unicode. Puesto que se necesita el paquete de compatibilidad de idioma UNICODE, actualmente este sistema sólo se aplica a Windows NT.

si buscas en internet unicode + visual basic , vas a encontrar toneladas de paginas que hablan del tema, miles de ejemplos hay, controles personalizados, etc...

fijate que en windows hay fuentes que tienen charset de diferentes idiomas, cuando seleccionas la fuente fijate hay un combo abajo de todo que podes cambiar el idioma de la fuente, con eso y poniendo los codigos de los caracteres correctos, te los va a mostrar bien.busca en internet las tablas de los caracteres para los paises, ahi te dcie el codigo que tiene cada letra china, rusa, arabe lo que sea...para despues hacerle el ChrW()...aca te paso un ejemplo...no es el mejor, pero para que veas como es te sirve seguro. pone un control Richtextbox1 en el form y este codigo.

Código
  1. Option Explicit
  2.  
  3. Private Const CP_UNICODE = 1200
  4. Private Const WM_USER = &H400&
  5. Private Const EM_SETTEXTEX = WM_USER + 97
  6.  
  7. Private Declare Function SendMessageWLng Lib "user32" Alias "SendMessageW" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  8.  
  9. Private Enum RTBW_FLAGS
  10.    RTBW_DEFAULT = 0
  11.    RTBW_KEEPUNDO = 1
  12.    RTBW_SELECTION = 2
  13. End Enum
  14.  
  15. Private Type SETTEXTEX
  16.    flags As RTBW_FLAGS
  17.    codepage As Long
  18. End Type
  19.  
  20. Private Sub Form_Load()
  21.  
  22.    Dim vIngles As String
  23.  
  24.    vIngles = ChrW(&H57) & ChrW(&H65) & ChrW(&H6C) & ChrW(&H63) & ChrW(&H6F) & ChrW(&H6D) & ChrW(&H65) & _
  25.              ChrW(&H20) & ChrW(&H74) & ChrW(&H6F) & ChrW(&H20) & _
  26.              "Unicode" & ChrW(&H21)
  27.  
  28.    Dim vAleman As String
  29.  
  30.    vAleman = ChrW(&H42) & ChrW(&H69) & ChrW(&H65) & _
  31.              ChrW(&H6E) & ChrW(&H76) & ChrW(&H65) & ChrW(&H6E) & _
  32.              ChrW(&H75) & ChrW(&H65) & ChrW(&H20) & ChrW(&H61) & _
  33.              ChrW(&H75) & ChrW(&H20) & "Unicode" & ChrW(&H21)
  34.  
  35.    Dim vJapones As String
  36.  
  37.    vJapones = "Unicode " & ChrW(&H3078) & _
  38.            ChrW(&H3087) & ChrW(&H3045) & ChrW(&H3053) & _
  39.            ChrW(&H305D) & ChrW(&H21)
  40.  
  41.    Dim vPortugues As String
  42.  
  43.    vPortugues = ChrW(&H53) & ChrW(&HE9) & ChrW(&H6A) & _
  44.            ChrW(&H61) & ChrW(&H20) & ChrW(&H42) & _
  45.            ChrW(&H65) & ChrW(&H6D) & ChrW(&H76) & _
  46.            ChrW(&H69) & ChrW(&H6E) & ChrW(&H64) & _
  47.            ChrW(&H6F) & ChrW(&H20) & "Unicode" & ChrW(&H21)
  48.  
  49.    Dim vRusia As String
  50.  
  51.    vRusia = ChrW(&H414) & ChrW(&H43E) & ChrW(&H431) & _
  52.                    ChrW(&H440) & ChrW(&H43E) & ChrW(&H20) & _
  53.                    ChrW(&H43F) & ChrW(&H43E) & ChrW(&H436) & _
  54.                    ChrW(&H430) & ChrW(&H43B) & ChrW(&H43E) & _
  55.                    ChrW(&H432) & ChrW(&H430) & ChrW(&H442) & _
  56.                    ChrW(&H44A) & ChrW(&H20) & ChrW(&H432) & _
  57.                    ChrW(&H20) & "Unicode" & ChrW(&H21)
  58.  
  59.    Dim vEspañol As String
  60.  
  61.    vEspañol = ChrW(&H42) & ChrW(&H69) & ChrW(&H65) & _
  62.                    ChrW(&H6E) & ChrW(&H76) & ChrW(&H65) & _
  63.                    ChrW(&H6E) & ChrW(&H69) & ChrW(&H64) & _
  64.                    ChrW(&H61) & ChrW(&H20) & ChrW(&H61) & _
  65.                    ChrW(&H20) & "Unicode" & ChrW(&H21)
  66.    Dim vChino As String
  67.  
  68.    vChino = ChrW(&H6B22) & ChrW(&H8FCE) & _
  69.            ChrW(&H4F7F) & ChrW(&H7528) & ChrW(&H20) & _
  70.            "Unicode" & ChrW(&H21)
  71.  
  72.    Call Unicode(vIngles & vbNewLine & vAleman & vbNewLine & vJapones & vbNewLine & vPortugues & vbNewLine & vRusia & vbNewLine & vEspañol & vbNewLine & vChino)
  73. End Sub
  74.  
  75. Private Sub Unicode(ByRef pTexto As String)
  76.  
  77.    Dim stUnicode As SETTEXTEX
  78.  
  79.    With stUnicode
  80.        .flags = RTBW_DEFAULT
  81.        .codepage = CP_UNICODE
  82.    End With
  83.  
  84.    Call SendMessageWLng(Richtextbox1.hWnd, EM_SETTEXTEX, VarPtr(stUnicode), StrPtr(pTexto))
  85. End Sub
  86.  

saludos.


Título: Re: Caracteres Especiales en TextBox [Ayuda]
Publicado por: Psyke1 en 29 Julio 2010, 10:39 am
Ok muchas gracias¡! ;-)

DoEvents¡! :P