2011-02-02 10 views
6

Aby ustalić zakład z jednym z moich kolegów, chciałbym dowiedzieć się, czy VB6 wspiera natywnie wszelkie niepodpisane typy danych.Czy VB6 obsługuje niepodpisane typy danych?

Uważam, że odpowiedź brzmi "nie", ale nie mogę znaleźć żadnej oficjalnej dokumentacji potwierdzającej to. Prostym odnośnikiem do dokumentu Microsoft byłaby akceptowalna odpowiedź; historyczne uzasadnienie tego, dlaczego takie typy nie są wspierane, byłoby dodatkowym bonusem.

+1

wiem, że VBA nie obsługuje go, gdy zrobisz modelu COM: unsigned typy nie są częścią typów OLE. Nie jestem pewien VB6. –

+3

Podejrzewam, że niepodpisane liczby nie są obsługiwane w VB z tego samego powodu, dla którego nie są obsługiwane w większości innych języków: są rzadko potrzebne. – Gabe

+0

Jedyna obsługiwana liczba całkowita bez znaku w Automation to Byte (unsigned char) – wqw

Odpowiedz

9

Jak powiedział Kris, nie są obsługiwane, z wyjątkiem Byte typ danych, który jest dostępny tylko jako niepodpisany, jak widać w tym liście typów danych: Data Type Summary

Strona wspomina o VBA, ale wspomina również o Visual Studio 6.0, a obsługiwane typy danych były takie same.

Nie sądzę, że znajdziesz oficjalną dokumentację wyjaśniającą, dlaczego nie dodawały niepodpisanych typów danych, ponieważ zazwyczaj jest to zła metoda, ponieważ prawdopodobnie nie było to "dlaczego nie mielibyśmy tego wspierać? "tak samo jak" byłoby warte dodatkowego wysiłku, aby to dodać ".

Edytowany w celu wspomnienia wyjątku o typie Byte wskazanym przez MarkJ.

+0

Ponieważ jestem w większości nieświadomy historii języków programowania, założyłem, że typy danych dla VB były oparte w przybliżeniu na tych z C. Ale jak właśnie dowiedziałem się na Wikipedii, VB oparty jest na BASIC, który został opracowany przed C (choć w latach 60.). – Fueled

+0

Cóż, VB oznacza w końcu "Visual Basic", choć nieczęsto widzę wypisane imię i nazwisko, więc jeśli nie pracowałeś z nim, mógłbyś tego nie widzieć. –

+2

+1 za połączenie z właściwą stroną. Jednak uważne odczytanie tej strony pokazuje, że VB6 obsługuje ** jeden ** niepodpisany typ danych: 'Byte', który jest niepodpisaną 1-bajtową liczbą całkowitą, jak C' char'. VB6 ma również wartości "Integer", "Long" i "Currency", które są odpowiednio podpisane 2-bajtowe, 4-bajtowe i (skalowane) 8-bajtowe liczby całkowite. – MarkJ

0

Nieobsługiwane.

Niektóre dobre informacje dotyczące ich symulację: http://www.vbforums.com/showthread.php?t=578430

+0

Już znalazłem dokładnie ten sam wątek, ale bardzo chciałbym zobaczyć oficjalną dokumentację Microsoft, która mówi, dlaczego typy unsigned nie są obsługiwane. – Fueled

1

Nieobsługiwany dla VB6, został dodany zgodnie z objaśnieniami pod tym link w VB.NET.

+0

To interesujące, pokazuje, że te niepodpisane typy zostały po raz pierwszy wprowadzone w VS 2005, co oznacza, że ​​nie były dostępne w pierwszej wersji VB.NET. – Fueled

2

Jedynym niepodpisanym typem całkowitym jest Byte.

0

Istnieje opcja przekazywania wartości szesnastkowych do typu Long, które byłyby przechowywane jako unsigned tak długo, jak długo bit znaku nie jest częścią wartości. więc na przykład:

&HFFFF = -1 

but &HFFFF& = 65535 

Zwróć uwagę, że te szesnastkowo-szesnastkowe są przekazywane do typu długiego, czyli 32-bitowego. więc bit znaku jest nietknięty. ale jeśli potrzebujesz 32-bitów, jedną z sugestii było użycie typu Double, ktoś wspomniał o tym wcześniej.

Jeśli chodzi o ogólnie niepodpisane typy, to Unsigned Long będzie 32-bitowym binarnym, w porównaniu do bajtu, który ma tylko 8 bitów. Spróbuj napisać 24-bitowe rejestry przez port szeregowy z typami Bajtów. :) Przyjmuję, że w VBA bit znaku siedzi jak odłamek na drodze logiki bitowej ..

w każdym razie, mam nadzieję, że to pomoże komuś .

okrzyki,

Norwood, MA