2011-02-02 17 views
6

Para resolver una apuesta con uno de mis colegas, me gustaría averiguar si VB6 admite nativamente cualquier tipo de datos sin firmar.¿VB6 admite tipos de datos sin firmar?

Creo que la respuesta es "no", pero parece que no puedo encontrar ninguna documentación oficial que lo confirme. Un simple enlace a un documento de Microsoft sería una respuesta aceptable; una justificación histórica de por qué tales tipos no son compatibles sería una ventaja añadida.

+1

Sé que VBA no soporta cuando haces interoperabilidad COM: los tipos sin signo no forman parte de tipos OLE. No estoy seguro para VB6. –

+3

Sospecho que los números sin firmar no están soportados en VB por el mismo motivo por el que no están soportados en la mayoría de los demás idiomas: rara vez son necesarios. – Gabe

+0

El único entero sin signo compatible en Automatización es Byte (char sin signo) – wqw

Respuesta

9

Como dijo Kris, no son compatibles, a excepción de la Byte tipo de datos, que sólo está disponible como sin firmar, como se puede ver en esta lista de los tipos de datos: Data Type Summary

La página menciona VBA, pero también menciona Visual Studio 6.0, y los tipos de datos compatibles son los mismos.

No creo que encuentres documentación oficial que indique por qué no agregaron tipos de datos sin firmar, ya que por lo general es incorrecto porque probablemente no fue un caso de "por qué no deberíamos apoyar esto". "tanto como" valdría la pena el esfuerzo adicional para agregar esto ".

Editado para mencionar la excepción del tipo de datos Byte como lo señala MarkJ.

+0

Como soy casi un ignorante sobre la historia de los lenguajes de programación, asumí que los tipos de datos para VB se basaban aproximadamente en los de C. Pero como acabo de descubrir en Wikipedia, VB se basa en BASIC, que se desarrolló antes de C (ambos en los 60's sin embargo). – Fueled

+0

Bueno, el VB significa "Visual Basic" después de todo, aunque no es frecuente ver el nombre completo escrito así que si no has trabajado con él, es posible que no lo hayas visto. –

+2

+1 para vincular a la página correcta. Sin embargo, una lectura cuidadosa de esa página muestra que VB6 admite ** un ** tipo de datos sin signo: 'Byte' que es un entero sin signo de 1 byte, como el C' char'. VB6 también tiene 'Integer',' Long' y 'Currency', que tienen enteros de 2 bytes, 4 bytes y (escalados) enteros de 8 bytes, respectivamente. – MarkJ

0

No compatible.

buena información con respecto a la simulación de ellos: http://www.vbforums.com/showthread.php?t=578430

+0

Ya había encontrado exactamente el mismo hilo, pero realmente me gustaría ver la documentación oficial de Microsoft que dice por qué los tipos sin firmar no son compatibles. – Fueled

1

No no compatible con VB6, se agregó como se explica en este link en VB.NET.

+0

Eso es interesante, muestra que estos tipos sin firmar se introdujeron por primera vez con VS 2005, lo que significa que no estaban disponibles con la primera versión de VB.NET. – Fueled

2

El único tipo entero sin signo es Byte.

0

Existe la opción de pasar valores hexadecimales a un tipo Largo que se almacenaría como no firmado siempre que el bit de signo no sea parte del valor. por ejemplo,

&HFFFF = -1 

but &HFFFF& = 65535 

tenga en cuenta que estos val de 16 bits se pasan a un tipo Largo, que es de 32 bits. por lo tanto, el bit de signo no está tocado. pero si necesita 32bits, una sugerencia es usar el tipo Doble, alguien lo mencionó antes.

En cuanto a la necesidad de tipos sin firmar en general, un Largo sin signo sería un binario de 32 bits, en comparación con un Byte de solo 8 bits. Trate de escribir registros de 24 bits a través de un puerto serie con tipos de bytes ... :) mi opinión es que en VBA el bit de signo se sienta como una astilla en el camino de la lógica de bits ...

en cualquier caso, espero que esto ayude a alguien .

aplausos,

Norwood, MA

Cuestiones relacionadas