开档案写档案
如何开档案逐行读取内容和逐行写入阵列资料
发现书上的写法跟VB6差很多,用了AI给的代码好像不能用
若能给个简单范例就好了
[此贴子已经被作者于2024-5-16 15:45编辑过]
程序代码:
Private Sub GetRegDataInStruct()
Dim FileNum As Integer, i As Integer, bStart As Boolean
Dim TempString As String
With RegData(0)
For i = 0 To .RegFileCount - 1
If i = 0 Then .RegTitleCount = 0
FileNum = FreeFile: bStart = False
Open .RegFile(i).RegFileName For Input As #FileNum
Do While Not EOF(FileNum)
Line Input #FileNum, TempString
If ((bStart = True) And (TempString <> "")) Then
ReDim Preserve .RegFile(i).RegFileData(.RegFile(i).RegFileDataCount)
.RegFile(i).RegFileData(.RegFile(i).RegFileDataCount) = TempString
.RegFile(i).RegFileDataCount = .RegFile(i).RegFileDataCount + 1
End If
If ((i = 0) And (bStart = False)) Then
ReDim Preserve .RegTitle(.RegTitleCount)
.RegTitle(.RegTitleCount) = TempString
.RegTitleCount = .RegTitleCount + 1
End If
If InStr(UCase$(TempString), UCase$(KeyWord)) <> 0 Then
bStart = True
End If
DoEvents
Loop
Close #FileNum
Next i
For i = 0 To .RegFileCount - 1
If GetNum(.RegFile(i).RegFileData(.RegFile(i).RegFileDataCount - 1)) > .MaxContactNum Then
.MaxContactNum = GetNum(.RegFile(i).RegFileData(.RegFile(i).RegFileDataCount - 1)) '最大Contact Number
End If
Next i
End With
End Sub

程序代码:
Private Sub OutputBuffData()
Dim FileNum As Integer, i As Long, j As Long, TotalCountNum As String
Dim FileN As String, MyTime As String, Temp() As String
On Error GoTo ErrorHandling
With RegData(0)
MyTime = .TimeFlowNum
FileN = .RegFilePath & .m_LotID & "_" & .m_WaferID & "_" & MyTime & Extension
FileNum = FreeFile
Open FileN For Output As #FileNum
For i = 0 To .RegTitleCount - 1
Print #FileNum, .RegTitle(i)
Next i
TotalCountNum = 0
For i = 0 To RegData(0).MaxContactNum - 1
For j = 0 To 7 'All Site --> 0 ~ 7
If Trim(RegData(0).AllRegData(i, j)) <> "" Then
TotalCountNum = TotalCountNum + 1
Print #FileNum, CStr(TotalCountNum) & " " & RegData(0).AllRegData(i, j)
End If
Next j
Next i
Close #FileNum
'debug log
FileN = "C:\MiniRegMergeTool_" & Format(Now, "yyyymm") & ".log"
FileNum = FreeFile
Open FileN For Append As #FileNum
Print #FileNum, Format(Now, "yyyy-mm-dd hh:mm:ss") & " -> " & TotalCountNum & vbCrLf
Close #FileNum
End With
'Erase RegData, NewRegData
Exit Sub
ErrorHandling:
Resume Next
End Sub

程序代码:
Private Sub GetRegDataInStruct()
Dim i As Integer, bStart As Boolean
With RegData(0)
For i = 0 To .RegFileCount - 1
If i = 0 Then .RegTitleCount = 0
Dim sr As StreamReader = New StreamReader(.RegFile(i).RegFileName)
Dim line As String
Do
line = sr.ReadLine()
'Console.WriteLine(line)
If ((bStart = True) And (line <> "")) Then
ReDim Preserve .RegFile(i).RegFileData(.RegFile(i).RegFileDataCount)
.RegFile(i).RegFileData(.RegFile(i).RegFileDataCount) = line
.RegFile(i).RegFileDataCount = .RegFile(i).RegFileDataCount + 1
End If
If ((i = 0) And (bStart = False)) Then
ReDim Preserve .RegTitle(.RegTitleCount)
.RegTitle(.RegTitleCount) = line
.RegTitleCount = .RegTitleCount + 1
End If
If InStr(UCase$(line), UCase$(KeyWord)) <> 0 Then
bStart = True
End If
Loop Until line Is Nothing
sr.Close()
Next i
For i = 0 To .RegFileCount - 1
If GetNum(.RegFile(i).RegFileData(.RegFile(i).RegFileDataCount - 1)) > .MaxContactNum Then
.MaxContactNum = GetNum(.RegFile(i).RegFileData(.RegFile(i).RegFileDataCount - 1)) '最大Contact Number
End If
Next i
End With
End Sub
程序代码:
Private Sub OutputBuffData()
Dim FileNum As Integer, i As Long, j As Long, TotalCountNum As String
Dim FileN As String, MyTime As String, Temp() As String
On Error GoTo ErrorHandling
With RegData(0)
MyTime = .TimeFlowNum
FileN = .RegFilePath & .m_LotID & "_" & .m_WaferID & "_" & MyTime & Extension
Dim sw As StreamWriter = New StreamWriter(FileN)
For i = 0 To .RegTitleCount - 1
sw.WriteLine(.RegTitle(i))
Next i
TotalCountNum = 0
For i = 0 To RegData(0).MaxContactNum - 1
For j = 0 To 7 'All Site --> 0 ~ 7
If Trim(RegData(0).AllRegData(i, j)) <> "" Then
TotalCountNum = TotalCountNum + 1
sw.WriteLine(CStr(TotalCountNum) & " " & RegData(0).AllRegData(i, j))
End If
Next j
Next i
sw.Close()
'debug log
' FileN = "C:\MiniRegMergeTool_" & Format(Now, "yyyymm") & ".log"
' FileNum = FreeFile()
'Open FileN For Append As #FileNum
' Print #FileNum, Format(Now, "yyyy-mm-dd hh:mm:ss") & " -> " & TotalCountNum & vbCrLf
'Close #FileNum
End With
'Erase RegData, NewRegData
Exit Sub
ErrorHandling:
Resume Next
End Sub
