• Thứ Sáu, 22/04/2005 16:50 (GMT+7)

    Câu hỏi :
    Xin hướng dẫn chuyển đoạn mã Visual Foxpro sang Visual Basic.


    Trả lời :
     FUNCTION MAHOA

     PARAMETER PCH

     PRIVATE CHUOI, ARR, SO12, CH12, I, X, SO, KQ

     CHUOI = ALLTRIM(PCH)

     DIMENSION ARR[12]

     ARR = 0

     FOR I = 1 TO LEN(CHUOI) SO12 = ASC(SUBSTR(CHUOI, I, 1))*123456789012 CH12 = LEFT(STR(SO12, 15, 0), 12)

     FOR X = 1 TO 12 SO = VAL(SUBSTR(CH12, X, 1)) ARR[X] = ARR(X)+SO+3 ENDFOR

     ENDFOR

     KQ = '   '

     FOR I = 1 TO 12 SO = MOD(ARR(I), 0075)+48 SO = IIF(BETWEEN(SO, 58, 62) .OR. BETWEEN(SO, 91, 96), SO+6, SO) KQ = KQ+CHR(SO)

     ENDFOR

     RETURN (KQ)

     ENDFUNC

     Thường các ngôn ngữ lập trình cung cấp cùng 1 tập các lệnh thực thi như lệnh gán, lệnh if, lệnh lặp (do, for, while), lệnh gọi hàm... Do đó việc chuyển mã viết bằng ngôn ngữ này sang ngôn ngữ khác không khó khăn lắm. Khó khăn lớn nhất trong việc chuyển dịch source code là các lệnh gọi hàm vì số lượng và chức năng của các hàm trong thư viện của các ngôn ngữ không tương thích nhau.

     Sau đây là đoạn code VB miêu tả hàm Mahoa bằng Visual Foxpro của bạn (lưu ý là chúng tôi chưa kiểm lỗi, ở đây chỉ demo ý tưởng dịch ngôn ngữ mà thôi):

     Hàm mã hóa chuỗi

     Function Mahoa(ByVal pch As String) As String

     khai báo các biến cục bộ cần dùng

     Dim chuoi As String

     Dim Arr(1 To 12) As Long

     Dim So12 As Double

     Dim ch12 As String

     Dim i As Long

     Dim x As Long

     Dim so As Long

     Dim kq As String

     chuoi = Trim(pch)

     gán 0 cho mọi phần tử của dãy Arr

     For i = 1 To 12

     Arr(i) = 0

     Next i

     mã hóa chuỗi gốc

     For i = 1 To Len(chuoi)

     So12 = Asc(Mid(chuoi, i, 1)) * 123456789012#

     ch12 = Left(Format(So12, “###############”), 12)

     For x = 1 To 12

     so = Asc(Mid(ch12, x, 1))

     Arr(x) = Arr(x) + so + 3

     Next x

     Next i

     kq = “”

     For i = 1 To 12

     so = Arr(i) Mod 75 + 48

     If (58 <= so And so <= 62) Or (91 <= so And so <= 96) Then

     so = so + 6

     End If

     kq = kq & Chr(so)

     Next i

     trả về kết quả mã hóa

     Mahoa = kq

     End Function
    Chuyên mục: Lập trình