Hỏi toàn câu khôn thế
.
Variant là một kiểu hỗn hợp, nó ghi được nhiều kiểu giá trị, mỗi kiểu giá trị nó lưu vào một field của variant record.
Ví dụ biến v kiểu Variant, nó được gán
v = 120.40
Thì cấu trúc của v được lưu v.VType = varDouble; v.VDouble = 120.40
v = "Tôi là Delphi"
Thì cấu trúc của v được lưu v.VType = varOleStr; v.VOleStr= "Tôi là Delphi"
....
+ Muốn nhận thẳng giá trị mà v lưu trữ thì gọi thông qua cấu trúc TVarData(v).Field (field là trường lưu giá trị nhứ VDouble, VOleStr,...). Nếu không gọi thẳng TVarData(v).Field mà gọi kiểu "dễ hiểu" là iSum = iSum + v thì trình biên dịch phải làm thêm cơ số việc đi so sánh kiểu rồi lấy giá trị nên tốc độ sẽ chậm hơn.
+ Muốn kiểm tra kiểu của biến v đang là varDouble hay varOleStr,.... thì dùng VarType(v).
Từ khóa khai báo tham số dạng reference (địa chỉ vùng nhớ) trong hàm và thủ tục:
Trong Delphi
var hoặc
out, VB/VBA là
ByRef là yêu cầu trỏ vào địa chỉ vùng nhớ của dữ liệu. Với cách này thì tham số chuyển tiếp qua các hàm và thủ tục sẽ nhanh, trình biên dịch không phải đi sao chép dữ liệu, đặc biệt với Array lớn sẽ mất nhiều thời gian vì nó phải sao chép. Khi làm với tham số kiểu tham chiếu phải cẩn thận trong code, không được thay đổi giá trị của nó nếu không có yêu cầu.