• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Bàn về &

Các bài viết hướng dẫn, giúp các bạn hiểu và tiếp cận với Visual Basic nhanh hơn
Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4762
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 515 time

Bàn về &

Gửi bàigửi bởi truongphu » T.Năm 04/02/2010 12:43 pm

Tên bài viết: Bàn về &
Tác giả: truongphu
Cấp độ bài viết: căn bản vb6
Tóm tắt: Ký tự quy ước sủa số Long thật rối rắm



Bàn về &

1- Quen thuộc nhất, đấy là ký tự kết nối 2 chuỗi, trường hợp nầy có khi người ta dùng ký tự +
"You And" & " Me" --> "You And Me"
"You And" + " Me" --> "You And Me"

2- Ít dùng hơn, là ký tự chuyển thành ký tự UnderLine, thấy trong Menu Editor, phần Caption: nếu có & ở trước ký tự nào thì ký tự ấy có underline
&File --> F_ile (tạm dùng dấu gạch dưới thay vì underline)

3- là tiếp vĩ ngữ của kiểu biến Long
Dim a& = Dim a As Long

4- là tiếp đầu ngữ dùng như hàm CLng. Thường dùng kèm ký tự H (hexa = 16) hay ký tự O (octa = 8)
&HFF --> 255
&H77 --> 119
&O77 --> 63
Dùng &H thì không quá 8 ký tự F (&HFFFFFFFF) và &O thì không quá 10 ký tự 7 (&O7777777777)

5- Số Long do &H tạo ra cần lưu ý:

a-- Nhóm 4 ký tự
* từ 0 (hệ 16) đến 7FFF ta nhận số nguyên dương (hệ 10); Số &H7FFF --> 32767
* từ 8000 (hệ 16) đến FFFF ta nhận số nguyên âm (hệ 10); Số &H8000 --> -32768
Để có số nguyên dương, ta lập phép tính: 65536 -32768 = 32768
mà 65536 = 256 * 256
như vậy, &HFFFF sẽ là -1 hay số dương là 65535

Quá 4 ký tự: lại thấy xuất hiện số dương khi dùng &H10000 --> 65536; &H5FDC0 --> 392640
Tuy nhiên, đấy chỉ là chu kỳ lập lại của nhóm 8 ký tự tương tự như trên

b-- Nhóm 8 ký tự
* từ 10000 (hệ 16) đến 7FFFFFFF là số long dương
* từ 80000000 đến FFFFFFFF là số long âm
Sở dĩ như vậy vì 7FFFFFFF đã là giới hạn cuối cùng của số Long (2147483647), chỉ cần thêm 1 (80000000= hệ 16) thì đã qua số Single
do đó, nếu vẫn dùng số Long, người ta cho mang số âm.
Và số &H80000000 --> -2147483648 có số Single là (65536*65536) - 2147483648 = 2147483648
Và số &HFFFFFFFF --> -1 có số Single là 4294967295

7- Đối với số Long âm (nhóm 4 ký tự), để thật sự nhận số Long dương, khỏi mất công tính toán như trên, người ta thêm tiếp vĩ ngữ &
* Nếu &HFFFF là -1
thì &HFFFF& sẽ là 65535
* còn nếu viết &HFF& thì lại thừa, vì &HFF đã là số Long dương
* Màu hệ thống của Form mặc định là &H8000000F&
đây là màu quá số Long (Xem bài về màu sắc trong Box thủ thuật), nếu bạn dán số &H8000000F& vào môi trường VB6, VB6 lập tức xóa ngay ký tự tiếp vĩ ngữ & để phù hợp số Long

8- Đây là điều tôi còn lúng túng: phép toán AND với &HFFFF
Như đã trình bày trên, &HFFFF sẽ là -1, đấy là quy ước của số Long dương 65535
nhưng VB6 khi hoạt động lại không xem như thế! ta xét:
MsgBox 65536 And &HFFFF --> 65536
MsgBox 65536 And &HFFFF& --> 0

do đó câu:

Mã: Chọn hết

If (wParam And &HFFF0) = SC_SIZE Then Exit Function

thì chưa chắc câu trả lời của tôi tại viewtopic.php?f=22&p=69193&sid=31a033a6064ca6894ebd9a13825b23e0#p69191
đã là đúng!

Riêng bạn, bạn có ý kiến thảo luận gì chăng? ;)


o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
NoBi
Quản trị
Quản trị
Bài viết: 954
Ngày tham gia: T.Ba 18/03/2008 1:22 pm
Đến từ: Sài Gòn
Has thanked: 51 time
Been thanked: 66 time
Liên hệ:

Re: Bàn về &

Gửi bàigửi bởi NoBi » T.Sáu 05/02/2010 11:22 am

Cháu nghĩ &HFFFF& là cố định số Long này là hệ 16 bit. Do đó khi And với (65536):
&HFFFF& AND &H10000 --> &H10000

Với &HFFFF khi And nó sẽ tự thêm vô số 0 đằng trước rồi mới thực hiện phép toán:
&H0FFFF AND &H10000 --> &H00000
:>

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4762
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 515 time

Re: Bàn về &

Gửi bàigửi bởi truongphu » T.Sáu 05/02/2010 11:49 am

truongphu đã viết:MsgBox 65536 And &HFFFF --> 65536
MsgBox 65536 And &HFFFF& --> 0


Tôi hơi đểnh đoảng, nghĩa là toàn bộ bài viết trên đều đúng

0 --> 65536 tức là = 65536 - 0 = 65536

nghĩa là chúng cùng chung kết quả
còn anh Nobi có trả lời, tôi sẽ bàn thêm ở trang bên

thanks
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh


Quay về “[VB] Bài viết hướng dẫn”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách