VB.net gọi DLL tự tạo bằng VB6 phát sinh trường hợp ngoài ý muốn, phương pháp thiết định giá trị cho đối số tham chiếu Byref

  • Thread starter Deleted member 293
  • Ngày gửi
D

Deleted member 293

Guest
Em chào các anh chị trên diễn đàn THVBA.
Em có vấn đề sau mong được các anh chị giải đáp dùm.

Khi em gọi DLL được tạo bằng VB6 từ chương trình EXE được tạo ra từ VB.Net 2015, trong trường hợp bình thường và cả bất bình thường (cố ý) thì giá trị thiết định cho tham số 1 không nạp được vào cho tham số 2.
Các anh chị xem giúp em với.

Mã:
Public Sub getDataForTest(ByVal strIn As String, ByRef strOut As String)
Dim intData As Integer

'Nap gia tri cua strIn cho strOut
strOut = strIn

'Lay gia tri cua strIn chia cho 1
intData = CInt(strIn) / 1

End Sub
[Trường hợp gọi bình thường]
Mã:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim objCom As New Project1.Class1
Dim strRet As String = ""

Try
Call objCom.getDataForTest("1", strRet)
Catch ex As Exception
MsgBox(ex.Message)
Finally
MsgBox(strRet)'Hien thi la 1
End Try

End Sub
[Trường hợp gọi bất bình thường (cố ý) ]
Mã:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim objCom As New Project1.Class1
Dim strRet As String = ""

Try
Call objCom.getDataForTest("A", strRet)
Catch ex As Exception
MsgBox(ex.Message)
Finally
MsgBox(strRet)'Mong muon hien thi la A nhung strRet la rong khong co gi
End Try

End Sub
 

phuonghong1997

Yêu THVBA như điếu đổ
Code ở DLL VB6 cần phải có bẫy(bỏ qua hay phớt lờ lỗi tại nơi có khả năng cao nhất gây ra lỗi).
Mã:
Public Sub getDataForTest( ... )
  Dim intData As Integer
  'Nap gia tri strIn cho strOut
  strOut = strIn
  ' ======Bay loi-Phot lo loi o day
  On Error Resume Next
  'Chia strIn cho 1
  intData = CInt(strIn) / 1
  if Err.Number then
    ' xu ly gi do o day khi loi xay ra
  end if
  ' ======Quay tro ve trang thai binh thuong
  On Error goto 0
  ' Xu ly tuy y gi do o day
End Sub
VB6 giờ ít người dùng. Theo mình thì bạn code trên VB.NET luôn cho nhanh.
 
D

Deleted member 293

Guest
Em cảm ơn, em sẽ tham khảo.
 
Top