Trong hơn 10 năm tôi đã sử dụng VB6, mọi lúc và sau đó tôi nhận được lỗi "Loại đối số ByRef không khớp", nơi tôi không thể tìm thấy sự không phù hợp. Sau khi đấu tranh trong một thời gian tôi đã luôn luôn punted bằng cách buộc các loại một cách này hay cách khác, nhưng lần này tôi nghĩ rằng tôi muốn hỏi. Tôi bao gồm tất cả các mã tôi nghĩ rằng có thể có bất cứ điều gì để làm với điều này; nhưng bạn có thể bỏ qua nó ngay bây giờ và tham khảo nó sau khi tôi giải thích vấn đề:VB6 - Loại đối số ByRef lỗi không khớp - ở đâu?
Public Type PBufferType Location(9) As Integer ' code location ValueHi(9) As Integer ' Vhi code ValueLo(9) As Integer ' Vlo code Locked(9) As Integer ' State of pair Gamma(9) As Single ' Gamma between this segment and next End Type Public GammaBuffer(1) As PBufferType ' The main data type Public SelectedBank as Integer Function MeasureLuxAtCode(code As Integer) As Single Call TestPatternForm.DrawTestWindow(3, code) MeasureLuxAtCode = MeasureLux(1) End Function
Sự cố xảy ra bên dưới. Dòng "LuxMinTarget = MeasureLuxAtCode (FirstLevel)" tạo ra lỗi "Loại đối số ByRef không khớp", chỉ ra rằng FirstLevel không phải là số nguyên.
Sub DetermineIdealLuxCurve() Dim FirstLevel, FirstDACtoMeasure As Integer FirstDACtoMeasure = 0 FirstLevel = GammaBuffer(SelectedBank).Location(FirstDACtoMeasure) LuxMinTarget = MeasureLuxAtCode(FirstLevel) End Sub
Nhưng dang nó, FirstLevel là một số nguyên, phải không? It's dim'ed một int, giá trị của nó được thiết lập bởi một UDT trả về một int, vì vậy mà tôi đã đi sai? Nếu tôi buộc nó vào phần int như sau:
LuxMinTarget = MeasureLuxAtCode(Int(FirstLevel))
trình biên dịch/thông dịch viên hạnh phúc. Nhưng tôi thi không.
Vì vậy, đây có phải là lỗi trong trình biên dịch hay chỉ là tôi bị dày đặc?
SelectBank và FirstDACtoMeasure được xác định ở đâu? –
Tôi đã chỉnh sửa câu hỏi để thêm hai biến đó. SelectedBank = số nguyên toàn cục và FirstDACtoMeasure = số nguyên cục bộ. –
Bạn chỉ có thể nhận được điều này khi gọi một phụ/chức năng có tham số được chuyển qua tham chiếu. Các định nghĩa của SelectedBank, FirstDACtoMeasure, DrawTestWindow() và MeasureLux() là gì? –