PDA

View Full Version : Làm sao gọi dll được viết bằng VB.NET trong VB6?



phamdacha@gmail.
06-02-2009, 11:45
Mình có một cái dll viết bằng VB.Net. Sau đó, từ trong VB6 mình muốn gọi các hàm trong dll này thì làm sao? Các bạn biết thì chỉ mình với nhé. Cái này mình đang cần gấp. Xin cảm ơn các bạn trước.

Code của dll đó như sau:

#Region " Đọc số "
'Khai báo
Dim mang_0_9() As String = {"không", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín"}
Dim mang_donvi() As String = {"", "ngàn", "triệu", "tỉ"}



Public Function Doc_so(ByVal so As String, Optional ByVal dv As String = "đồng") As String
'Hàm Doc_so để đọc một chuỗi số dương bất kỳ,với đơn vị mặc định là đồng
If Kiem_tra_chuoi_so(so) = False Then
'MsgBox("Chuỗi số đưa vào không hợp lệ,vui lòng kiểm tra lại", 'MsgBoxStyle.Exclamation, "Thông báo")
Exit Function
End If
Dim s(1), chuoi_doc As String
Dim so_dai As Integer = so.Length
Dim i As Integer
'Khi chiều dài của chuỗi số > 3
'Nếu lớn hơn 3 ký tự
If so_dai > 3 Then
s = Tach_3_so(so)
Dim tam, doc As Integer
'Đọc từng chuỗi con
For i = s.Length - 1 To 0 Step -1
' 'MsgBox(chuoi_doc)
'Nếu chuỗi con khác "000" thì đọc
If CInt(s(i)) <> 0 Then
doc += 1
Select Case s(i).Length
Case 1, 2
chuoi_doc &= Doc_so_0_99(s(i))
Case 3
If doc > 1 Then
'Đọc "không trăm" khi chuỗi con trước khác "000"
chuoi_doc &= Doc_so_100_999(s(i), True)
Else
chuoi_doc &= Doc_so_100_999(s(i))
End If
End Select
tam = i
'Thêm đơn vị tỉ,triệu,ngàn sau khi đọc chuỗi con
If tam < 4 Then
'nếu chưa vượt quá hàng tỉ
chuoi_doc &= " " & mang_donvi(tam)
Else
'nếu vượt quá hàng tỉ
tam = i Mod 3
'chuoi_doc &= " " & mang_donvi(tam) & " " & mang_donvi(3)
chuoi_doc &= " " & mang_donvi(tam)
If i Mod 3 = 0 Then
Dim j As Integer
For j = 0 To Int(i / 3) - 1
chuoi_doc &= " " & mang_donvi(3)
Next
End If
End If
End If
Next
Else
'nếu nhỏ hơn 3 ký tự
Select Case so.Length
Case 1, 2
chuoi_doc &= Doc_so_0_99(so)
Case 3
chuoi_doc &= Doc_so_100_999(so)
End Select
End If
'Thay chữ cái đầu thành chữ hoa
Dim chu_cai_dau As Char = chuoi_doc.Chars(1)
chu_cai_dau = chu_cai_dau.ToUpper(chu_cai_dau)
chuoi_doc = chuoi_doc.Insert(2, chu_cai_dau)
chuoi_doc = chuoi_doc.Remove(0, 2)

Return chuoi_doc & " " & dv
End Function


Public Function Kiem_tra_chuoi_so(ByVal s As String) As Boolean
'Hàm kiểm tra có phải là chuỗi số dương không?
Dim i As Integer
If s.Length = 0 Then Return False
For i = 0 To s.Length - 1
If s.Chars(i) < "0" Or s.Chars(i) > "9" Then
Return False
End If
Next
Return True
End Function

Public Function Tach_3_so(ByVal so As String) As String()
'Hàm tách 3 ký tự từ phải sang trái
Dim s(1) As String
Dim so_dai As Integer = so.Length
Dim i, lan_tach As Integer
'Khi chiều dài của chuỗi số > 3
'Tính số lần tách,mỗi lần tách là 3 ký tự
'Nếu lớn hơn 3 ký tự
If so_dai > 3 Then
'Kiểm tra chiều dài của chuỗi số
If so_dai Mod 3 = 0 Then
'chia hết cho 3 thì giữ nguyên
lan_tach = Int(so_dai / 3)
Else
'chia hết cho 3 thì tăng 1
lan_tach = Int(so_dai / 3) + 1
End If
ReDim s(lan_tach)
'Lấy các chuỗi con đưa vào mảng
For i = 0 To lan_tach - 1
If so_dai >= 3 Then
s(i) = so.Substring((so.Length - 3) - i * 3, 3)
so_dai -= 3
Else
s(i) = so.Substring((so.Length - so_dai) - i * 3, so_dai)
End If
Next
Return s
Else
s(0) = so
Return s
End If
End Function





Public Function Doc_so_100_999(ByVal so As String, Optional ByVal doc As Boolean = False) As String
'Hàm Doc_so_0_99 để đọc một chuỗi số dương từ 100 đến 999
'biến "doc" là biến cho biết có đọc "không trăm" khi hàng trăm = 0
If Kiem_tra_chuoi_so(so) = False Then
'MsgBox("Chuỗi số đưa vào không hợp lệ,vui lòng kiểm tra lại", 'MsgBoxStyle.Exclamation, "Thông báo")
Exit Function
End If
Dim s As String
Dim t, c, dv As Integer
'Số ở hàng trăm
t = Int(CInt(so) / 100)
'Số ở hàng chục
c = Int((CInt(so) / 10) Mod 10)
'Số ở hàng đơn vị
dv = Int(CInt(so) Mod 10)
'Kiểm tra có đọc "không trăm" khi hàng trăm = 0
If doc = False And t = 0 Then
'nếu không
s = Doc_so_0_99(so.Substring(so.Length - 2, 2))
Else
'nếu có
s = " " & mang_0_9(t)
s &= " " & "trăm"
'Khi hàng chục = 0 và hàng đơn vị # 0
If c = 0 Then
If dv <> 0 Then
s &= " " & "lẻ"
s &= Doc_so_0_99(so.Substring(so.Length - 1, 1))
End If
Else
s &= Doc_so_0_99(so.Substring(so.Length - 2, 2))
End If

End If
Return s
End Function



Public Function Doc_so_0_99(ByVal so As String) As String
'Hàm Doc_so_0_99 để đọc một chuỗi số dương từ 0 đến 99
If Kiem_tra_chuoi_so(so) = False Then
'MsgBox("Chuỗi số đưa vào không hợp lệ,vui lòng kiểm tra lại", 'MsgBoxStyle.Exclamation, "Thông báo")
Exit Function
End If
Dim s As String
Dim c, dv As Integer
'Số ở hàng chục
c = Int(CInt(so) / 10)
'Số ở hàng đơn vị
dv = Int(CInt(so) Mod 10)
'Khi hàng chục = 0
If c = 0 Then
s &= " " & mang_0_9(dv)
'Khi hàng chục = 1
ElseIf c = 1 Then
s &= " " & "mười"
'Khi hàng đơn vị = 5
If dv = 5 Then
s &= " " & "lăm"
ElseIf dv <> 0 Then
s &= " " & mang_0_9(dv)
End If
Else
s = " " & mang_0_9(c)
s &= " " & "mươi"
'Khi hàng đơn vị = 1
If dv = 1 Then
s &= " " & "mốt"
'Khi hàng đơn vị = 5
ElseIf dv = 5 Then
s &= " " & "lăm"
ElseIf dv <> 0 Then
s &= " " & mang_0_9(dv)
End If
End If
Return s
End Function

#End Region

honglam1990
24-04-2009, 21:31
Bài viết này khá hay