Estás en: Inicio >> Foros >> Informática >> Programación
Programación /

[VB.NET] Strings * en Visual Basic .NET

Participa en el tema [VB.NET] Strings * en Visual Basic .NET en el foro Programación.
hola tengo una duda de VB.NET Quiero hacer el equivalente de Visual Basic 6 cuando ...

Buscar en este tema:
 
  •  
    #1 [VB.NET] Strings * en Visual Basic .NET
    hola tengo una duda de VB.NET
    Quiero hacer el equivalente de Visual Basic 6 cuando definias un String de Tamaño fijo como por ejemplo: Dim s as String * 15, y s tenia tamaño 15, en VB.NET me encontre que esto no es mas valido, si me podrias decir como es te lo agradeceria, saludos.

    hola, jaja, me respondo a mi mismo.
    Investigue un poco y hay algo asi:

    Imports Microsoft.VisualBasic.Compatibility

    ....

    Dim a As New VB6.FixedLengthString(2)

    y ahi si a es de longitud fija de tamaño 2

    Si alguien como hacerlo de otra manera sin usar compatibilidad con VB6 soy todo ojos, saludos.
    +
     
    0
    Me gusta
     
    | Más
  • #2 Re: Strings * en Visual Basic .NET

    perdon, yo me exprese mal.

    El problema que tenia era el Siguiente:

    [VB6]
    Type T
    Dim s as String * 15
    end Type

    lo que me tiro el conversor de VB6 a VB.NET:

    [VB.NET]
    Structure T
    'UPGRADE_WARNING: Fixed-length string size must fit in the buffer. Click for more: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="3C1E4426-0B80-443E-B943-0627CD55D48B"'
    <VBFixedString(2), System.Runtime.InteropServices.MarshalAs(System.Ru ntime.InteropServices.UnmanagedType.ByValArray, SizeConst:=15)> Public var() As Char
    End Structure


    AAAAAAAAAAAAAAHHHHHHHHHH que esooo ???

    despues averiguando me decia que no se pueden usar estructuras con arreglos fijos, que cagada, ahora que hago???

    Alguna solucion.
    Me gusta este mensaje
  • #3 Re: Strings * en Visual Basic .NET

    usa un array de char[] de longitud fija. despues a ese array lo podes pasar a string con

    string stringPrueba = new string (arrayDeChar);

    y listo.
    Un string no es más que un array de chars
    Me gusta este mensaje
  • #4 Re: Strings * en Visual Basic .NET

    hola, muchas gracias por la respuesta, pero creo que no me entendiste muy bien. Yo tambien la pense por ahi pero parece que VB.NET se reusa a darme strings de largo fijo, jaja...

    Yo lo que queria era simplemente solucionar esto:

    Codigo VB6:

    Type T
    s as String * 15
    End Type

    Cosa que en VB.NET no se permite mas, asi que opte por controlar yo el largo del string, ademas yo necesitaba esto para escribir registros dentro de un archivo binario que me quedaba muy comodo con el VB6. Estube averiguando y como te dije en VB.NET no esta mas permitido, salvo que quieras tener esto en tu codigo que me parece inhumano:

    Structure T
    'UPGRADE_WARNING: Fixed-length string size must fit in the buffer. Click for more: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="3C1E4426-0B80-443E-B943-0627CD55D48B"'
    <VBFixedString(2), System.Runtime.InteropServices.MarshalAs(System.Ru ntime.Inte ropServices.UnmanagedType.ByValArray, SizeConst:=15)> Public var() As Char
    End Structure

    asi que bueno, opte por manejarlo yo, otra solucion es:

    Dim a As New Microsoft.VisualBasic.Compatibility.VB6.FixedLengt hString(5)
    a.Value = "12345Esto no sale en pantalla"
    MsgBox(a.ToString)

    Listo, solucionado los Strings de tamaño fijo....

    ...pero caramba, nuevamente VB.NET no te permite esto:

    Structure S
    Dim a As New Microsoft.VisualBasic.Compatibility.VB6.FixedLengt hString(5)
    End Structure


    asi que bueno, lo controlo yo, puse esto

    Structure S
    <VBFixedString(8)> Dim s as String
    End Structure

    y listo, ahi parece que engancho, igualmente a pesar que de que s pareciera de que tiene long fija y de 8 vos le podes asignar un string de 1000 que lo toma igual. Asi que el control lo hago yo, me tomo la precaucion de no asignarle a s strings de mas de 8 caracteres, porque parece que cuando vos declaras por ej:

    Dim c(2) as Char no lo toma como un arreglo sino como un (Char *) de C, que le asignas strings del largo que vos quieras, asi que en conclusion no saque nada en limpio, hay otro camino que es manejar la clase Marshal o algo asi, pero no me puse a leer que era....
    Bueno, espero que no te hayas cansado de leer todo lo que puse, saludos.
    Me gusta este mensaje
  • #5 Re: Strings * en Visual Basic .NET

    Structure S
    <MarshalAs(UnmanagedType.ByValTStr,sizeconst:=6) > Dim s as String
    End Structure

    De esta manera y creo que la definitiva va a tomarme el String de Longitud 5, si de 5 aunque diga 6, ese es un error de ellos, siempre es uno mas de lo que quiero ponerle al string.
    Me gusta este mensaje
Estás en: Inicio >> Foros >> Informática >> Programación


Estadísticas del tema
  • 4 RESPUESTAS
  • 6781 VISTAS
  • 2 USUARIOS RESPONDIERON
 
Ir arriba
Contacto | Acerca de | Ayuda | Términos Legales | privacidad | Pautas de convivencia | Mapa de los foros | TrabajÁ con nosotros
©2008 Psicofxp.com S.A. - Todos los derechos reservados
Certifica IAB