hey guys,
Been browsing these forums for a few months when I'm stuck on problems but this one has really got me stumped. Perhaps I'm missing something simple though
Anyway, I've been tasked to develop a program that will delete lines from a .ini file were needed. However when I run the program (restoring the orginal files each time) I get different results each time.
For Instance, sometimes it will delete 1100 lines through all of the .ini files in the folder, then other times it will delete 600. I can run through multiple times and eventually it will slowly go down to0. But I can't see why it doesn't do it the first time round.
Heres the code:
Hopefully I've explained myself properly. The first if statement is just see what combination of check boxes are ticked. Through all runs all are checked.
Thanks,
/Taylor
Been browsing these forums for a few months when I'm stuck on problems but this one has really got me stumped. Perhaps I'm missing something simple though
Anyway, I've been tasked to develop a program that will delete lines from a .ini file were needed. However when I run the program (restoring the orginal files each time) I get different results each time.
For Instance, sometimes it will delete 1100 lines through all of the .ini files in the folder, then other times it will delete 600. I can run through multiple times and eventually it will slowly go down to0. But I can't see why it doesn't do it the first time round.
Heres the code:
VB.NET:
Imports System.IO
Public Class frmFail
Dim files() As String
Dim path As String
Dim line As String
Dim lineCount As Integer
Dim s() As String
Dim splitLine As String
Dim x As Integer
Dim check As Integer
Dim deletedItems As Integer = 0
Private Sub btnLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLoad.Click
Dim valid As Boolean = False
Try
files = Directory.GetFiles(txtDirect.Text, "*.ini")
Catch ex As DirectoryNotFoundException
MessageBox.Show("Directory Not Found, please check correct path is entered", "Error")
Exit Sub
Catch moarEx As ArgumentException
MessageBox.Show("No path entered", "Error")
Exit Sub
End Try
If MessageBox.Show("Are you sure you want to continue,? Deleted items are NOT recoverable.", _
"Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) = Windows.Forms.DialogResult.No Then
Exit Sub
End If
If txtDirect.Text = "" Then
MessageBox.Show("No Directory Entered, please enter path at top of window", "Error")
Exit Sub
End If
deletedItems = 0
btnLoad.Enabled = False
btbDirect.Enabled = False
chbInstall.Enabled = False
chbUninstall.Enabled = False
chbDepend.Enabled = False
chbVersion.Enabled = False
lstShow.Items.Clear()
lineCount = 0
Dim SR As StreamReader
If chbInstall.Checked = True And chbUninstall.Checked = True And chbDepend.Checked = True And chbVersion.Checked = True Then
check = 1 'if all are checked
ElseIf chbInstall.Checked = True And chbUninstall.Checked = False And chbDepend.Checked = True And chbVersion.Checked = False Then
check = 2 'if install is checked
ElseIf chbInstall.Checked = False And chbUninstall.Checked = True And chbDepend.Checked = True And chbVersion.Checked = False Then
check = 3 'if uninstall if checked
ElseIf chbDepend.Checked = True And chbInstall.Checked = False And chbUninstall.Checked = False And chbVersion.Checked = False Then
check = 4 'if depend is checked
ElseIf chbInstall.Checked = True And chbUninstall.Checked = True And chbDepend.Checked = False And chbVersion.Checked = False Then
check = 5 'if install and uninstall are checked
ElseIf chbInstall.Checked = True And chbUninstall.Checked = False And chbDepend.Checked = True And chbVersion.Checked = False Then
check = 6 'if install and depend are checked
ElseIf chbInstall.Checked = False And chbUninstall.Checked = True And chbDepend.Checked = True And chbVersion.Checked = False Then
check = 7 'if uninstall and depend are checked
ElseIf chbInstall.Checked = False And chbUninstall.Checked = False And chbDepend.Checked = False And chbVersion.Checked = True Then
check = 8 'if version is checked
ElseIf chbInstall.Checked = True And chbUninstall.Checked = False And chbDepend.Checked = False And chbVersion.Checked = True Then
check = 9 'if install and version are checked
ElseIf chbInstall.Checked = False And chbUninstall.Checked = True And chbDepend.Checked = False And chbVersion.Checked = True Then
check = 10 'if uninstall and version are checked
ElseIf chbInstall.Checked = False And chbUninstall.Checked = False And chbDepend.Checked = True And chbVersion.Checked = True Then
check = 11 'if depend and version are checked
ElseIf chbInstall.Checked = True And chbUninstall.Checked = True And chbDepend.Checked = True And chbVersion.Checked = False Then
check = 12 'if install,uninstall,depend are checked
ElseIf chbInstall.Checked = False And chbUninstall.Checked = True And chbDepend.Checked = True And chbVersion.Checked = True Then
check = 13 'if uninstall,depend,version are checked
ElseIf chbInstall.Checked = True And chbUninstall.Checked = True And chbDepend.Checked = False And chbVersion.Checked = True Then
check = 14 'if install,uninstall,version are checked
ElseIf chbInstall.Checked = True And chbUninstall.Checked = False And chbDepend.Checked = True And chbVersion.Checked = True Then
check = 15 'if install,depend,version are checked
Else
MessageBox.Show("Please Check At Least One Option", "Error")
End If
For x = 0 To UBound(files)
lineCount = 0
lstShow.Items.Clear()
SR = New StreamReader(files(x))
Do
lineCount += 1
line = SR.ReadLine
Loop Until line Is Nothing
lineCount -= 2
SR.Dispose()
SR.Close()
SR = Nothing
SR = New StreamReader(files(x))
line = SR.ReadLine
For i = 0 To lineCount
lstShow.Items.Add(line)
line = SR.ReadLine
Next
SR.Dispose()
SR.Close()
SR = Nothing
lstShow.SelectedIndex = 0
For i = 0 To lineCount
Dim search As String = lstShow.Items(lstShow.SelectedIndex)
s = search.Split("=")
If UBound(s) > 0 Then
Select Case check
Case 1
If s(1) = "INSTALL_FAILED" Or s(1) = "UNINSTALL_FAILED" Or s(1) = "NOT_INSTALLED (DEPENDENCY)" Or s(1) = "NOT_INSTALL (OS VERSION)" Then
valid = True
Else
valid = False
End If
Case 2
If s(1) = "INSTALL_FAILED" Then
valid = True
Else
valid = False
End If
Case 3
If s(1) = "UNINSTALL_FAILED" Then
valid = True
Else
valid = False
End If
Case 4
If s(1) = "NOT_INSTALLED (DEPENDENCY)" Then
valid = True
Else
valid = False
End If
Case 5
If s(1) = "INSTALL_FAILED" Or s(1) = "UNINSTALL_FAILED" Then
valid = True
Else
valid = False
End If
Case 6
If s(1) = "INSTALL_FAILED" Or s(1) = "NOT_INSTALLED (DEPENDENCY)" Then
valid = True
Else
valid = False
End If
Case 7
If s(1) = "UNINSTALL_FAILED" Or s(1) = "NOT_INSTALLED (DEPENDENCY)" Then
valid = True
Else
valid = False
End If
Case 8
If s(1) = "NOT_INSTALLED (OS VERSION)" Then
valid = True
Else
valid = False
End If
Case 9
If s(1) = "INSTALL_FAILED" Or s(1) = s(1) = "NOT_INSTALLED (OS VERSION)" Then
valid = True
Else
valid = False
End If
Case 10
If s(1) = "UNINSTALL_FAILED" Or s(1) = s(1) = "NOT_INSTALLED (OS VERSION)" Then
valid = True
Else
valid = False
End If
Case 11
If s(1) = "NOT_INSTALLED (DEPENDENCY)" Or s(1) = "NOT_INSTALLED (OS VERSION)" Then
valid = True
Else
valid = False
End If
Case 12
If s(1) = "INSTALL_FAILED" Or s(1) = "UNINSTALL_FAILED" Or s(1) = "NOT_INSTALLED (DEPENDENCY)" Then
valid = True
Else
valid = False
End If
Case 13
If s(1) = "UNINSTALL_FAILED" Or s(1) = "NOT_INSTALLED (DEPENDENCY)" Or s(1) = "NOT_INSTALLED (OS VERSION)" Then
valid = True
Else
valid = False
End If
Case 14
If s(1) = "INSTALL_FAILED" Or s(1) = "UNINSTALL_FAILED" Or s(1) = "NOT_INSTALLED (OS VERSION)" Then
valid = True
Else
valid = False
End If
Case 15
If s(1) = "INSTALL_FAILED" Or s(1) = "NOT_INSTALLED (DEPENDENCY)" Or s(1) = "NOT_INSTALLED (OS VERSION)" Then
valid = True
Else
valid = False
End If
Case Else
valid = False
End Select
End If
Try
If valid = True Then
lstShow.Items.RemoveAt(lstShow.SelectedIndex)
lineCount -= 1
i = 0
lstShow.SelectedIndex = 0
deletedItems += 1
lblDel.Text = CStr(deletedItems) & " Items Deleted"
End If
If lstShow.SelectedIndex < lineCount Then lstShow.SelectedIndex += 1
Catch ex As Exception
MsgBox(ex.Message & " " & files(x) & " " & i)
End Try
Next
Dim write(lineCount) As String
lstShow.SelectedIndex = 0
For i = 0 To lineCount
write(i) = lstShow.Items(lstShow.SelectedIndex)
If lstShow.SelectedIndex < lineCount Then lstShow.SelectedIndex += 1
Next
Dim stream As New FileStream(files(x), FileMode.Open, FileAccess.Write, FileShare.None)
Dim writer As New StreamWriter(stream)
For i = 0 To UBound(write)
writer.WriteLine(write(i))
Next
writer.Close()
writer = Nothing
Next
btnLoad.Enabled = True
btbDirect.Enabled = True
chbInstall.Enabled = True
chbUninstall.Enabled = True
chbDepend.Enabled = True
chbVersion.Enabled = True
End Sub
Private Sub btbDirect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btbDirect.Click
Try
files = Directory.GetFiles(txtDirect.Text, "*.ini")
Catch ex As DirectoryNotFoundException
MessageBox.Show("Directory Not Found, please check correct path is entered", "Error")
Exit Sub
Catch moarEx As ArgumentException
MessageBox.Show("No path entered", "Error")
Exit Sub
End Try
lstShow.Items.Clear()
For x = 0 To UBound(files)
lstShow.Items.Add(files(x))
Next
End Sub
Private Sub btnAbout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAbout.Click
frmAbout.Show()
End Sub
End Class
Hopefully I've explained myself properly. The first if statement is just see what combination of check boxes are ticked. Through all runs all are checked.
Thanks,
/Taylor