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
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.