16. august 2008 - 21:01Der er
9 kommentarer og 1 løsning
A first chance exception of type 'System.ArgumentException' occur
Jeg har følgende i et program jer har gang i.
1. Jeg læser linierne i en fil, hvor hver linie består af [TEXT];[TEXT] 2. Når alle linier er læst(kommet i et array), splitter dem op ved ";" 3. Resultaterne kommer jeg i en ListView control.
Mit problem er. Det virker "fint" med den første linie jeg har indlæst, og den kommer fint i min ListView. I anden omgang når den til at splitte linien op, men når den kommer til: BackupList.Items.Add(lstBackup) får jeg en fejl der hedder: A first chance exception of type 'System.ArgumentException' occurred in System.Windows.Forms.dll
Hvis jeg fjerner: BackupList.Items.Add(lstBackup) kan jeg se, at alle linier er blevet fundet i min fil, og de bliver fint splittet.
Jeg skylder at indskyde, at den første linie kommer ganske fint ind i min ListView, men så heller ikke mere.
Håber der er nogen der kan komme med et bud på hvor problemet ligger.
For Each strLine In arrLines Debug.Print("For each") arrLine = Split(strLine, ";") 'Debug.Print("String Splittet") lstBackup.Text = arrLine(0) Debug.Print(arrLine(0)) lstBackup.SubItems.Add(arrLine(1)) Debug.Print(arrLine(1)) BackupList.Items.Add(lstBackup) Debug.Print("Liste lavet") Next strLine
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim BackupDef As String = "J:\archive\backupDef.txt" Dim oRead As System.IO.StreamReader Dim strLine As String Dim arrLines() As String = Nothing Dim arrLine() As String Dim noLine As Integer Dim lstBackup As ListViewItem = New ListViewItem()
oRead = System.IO.File.OpenText(BackupDef)
noLine = 0 While oRead.Peek <> -1 ReDim Preserve arrLines(noLine) strLine = oRead.ReadLine() arrLines(noLine) = strLine noLine = noLine + 1 End While
noLine = 0 For Each strLine In arrLines Debug.Print("For each") arrLine = Split(strLine, ";") 'Debug.Print("String Splittet") lstBackup.Text = arrLine(0) Debug.Print(arrLine(0)) lstBackup.SubItems.Add(arrLine(1)) Debug.Print(arrLine(1)) BackupList.Items.Add(lstBackup) Debug.Print("Liste lavet") Next strLine
'BackupList.Items.Add(lstBackup) Debug.Print("Fil lukket") oRead.Close() End Sub
Okay, jeg har så stirret mig blind på det, og kommer i tanke om at jeg før har lavet noget lignende. Årsagen er at jeg ikke opretter en ListViewItem hvor hver gang.
Løsningen, der virker:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim BackupDef As String = "J:\archive\backupDef.txt" Dim oRead As System.IO.StreamReader Dim arrLine() As String Dim lstBackup As ListViewItem
oRead = System.IO.File.OpenText(BackupDef)
While oRead.Peek <> -1 lstBackup = New ListViewItem arrLine = Split(oRead.ReadLine(), ";")
He he, den så jeg ikke, men det er en klassiker. Så må du en anden gang kigge på tråde i GUI-er - kan godt være mit link var en kende kompliceret, men det anbefales.
Nej, det er ikke altid man lige ser det åbenlyse :)
Hvad angår tråde i GUI'er, så skal jeg ikke udelukke at det da senere vil blive noget jeg kommer til at kigge på. For det ikke skal være løgn, har jeg faktisk tidligere set den side i min søgen efter en løsning. Hvis du vil have point, skal du bare smide et svar.
Okay - men tak for input under alle omstændigheder
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.