Dim oRead As New StreamReader("D:\\KTCGSB.txt")
Dim oWrite As New StreamWriter("D:\\DataOut.txt")
Dim sLine As String = ""
Dim sBF As String = ""
Dim sGen As String = ""
Dim sBF2 As String = ""
Dim i As Integer
Dim iTogle As Integer = 2
Dim iRet As Integer = 0
Dim iDigit As Integer = 0
Dim iResult As Integer = 0
Dim iSum As Integer = 10
While oRead.Peek <> -1 ' อ่านตั้งแต่ต้นไฟล์จนหมดไฟล์
sLine = oRead.ReadLine ' อ่านทีละบรรทัดเข้าตัวแปร sLine
If sLine.Substring(0, 1).Equals("D") Then ' ดูตำแหน่งแรกของแถวว่ามีค่าเท่ากับ "D" หรือไม่
sBF = sLine.Substring(0, 9) ' ดึงข้อมูลตำแหน่งที่ 0(index) มาจำนวน 9 ตัวอักษรเก็บลงตัวแปร
sGen = sLine.Substring(9, 10) 'ดึงข้อมูลมาทำการ gen ใหม่
sGen = "0" & sGen 'เต็ม 0 หน้าข้อมูลใหม่
For i = 0 To sGen.Length - 1 'เข้าสูตร
sBF2 = sGen.Substring(i, 1)
If iTogle = 2 Then
iTogle = 1
sBF2 = CInt(sBF2) * 2
If CInt(sBF2) >= 10 Then
Dim iB1 As Integer = sBF2.Substring(0, 1)
Dim iB2 As Integer = sBF2.Substring(1, 1)
sBF2 = iB1 + iB2
End If
Else
iTogle += 1
End If
iRet += sBF2
Next
iDigit = iRet Mod 10
iResult = iSum - iDigit
sGen &= iResult
sBF &= sGen ' ข้อความที่ต้องการเปลี่ยนค่าระหว่างตำแหน่งที่ 4-9
sBF &= sLine.Substring(19) ' ดึงข้อมูลเริ่มจากตำแหน่งที่ 10 จนสุดท้าย(กรณีไม่ระบุ length)
oWrite.WriteLine(sBF) ' เขียนลงไฟล์ output
Else
oWrite.WriteLine(sLine)
'TextBox1.Text = sBF2
End If
End While
oRead.Close()
oWrite.Close()