String Array mit Foreach Schleife füllen

  • VB.NET
  • .NET (FX) 3.0–3.5

Es gibt 72 Antworten in diesem Thema. Der letzte Beitrag () ist von Orion.

    Orion schrieb:

    NullreferenceException
    in welcher Codezeile?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Er markiert mir den ganzen Block. Habe jetzt Testweise eine Datei mit einem String geschrieben. Funktioniert so, kann es vielleicht daran liegen wenn in einer der Textboxen kein Text steht oder so? Kann man das irgendwie dann mit einem Leerschlag ersetzen oder so? Ansonsten ist ja die Anordnung nach Array komplett durcheinander.
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Orion schrieb:

    Er markiert mir den ganzen Block.
    Pack mal Deine String-Verknüpfung aus dem Argument in separate n Zeilen, wo Du ausgehend von einem StringBuilder die Text-Properties einzeln hinzufügst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Habe den Fehler gefunden aber weiss nicht was der Grund ist. Also habe von Anfang an bemerkt das sich eine ComboBox seltsam verhält im Gegensatz zu den anderen. Also sie wird auch an eine Datenbank gebunden und wenn ich das Programm starte lädt es Daten die zuletzt eingegeben wurden in die Felder. Bei der Combobox aber nicht und ich weiss nicht wieso. Habe jetzt jedes Feld einzeln abgefragt ob ein Wert enthalten ist und wenn nicht soll er ein Leerschlag machen. Bei dieser ComboBox kam nun der NullReferenceException

    Die Box ist so definiert wie alle anderen auch...
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    die My.Settings speichern nur die zuletzt eingegebenen Daten... um sie im nächsten Start wieder aufzurufen. Mit der BindingSource kann man doch nicht den zuletzt selektierten Wert aufrufen im Programmstart oder?
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Comboboxen kann man kann man auch leicht verhunzen, wenn man im Designer die Bindings falsch eingestellt hat.
    Im UserCode ist sowas gar nicht zu sehen, weil der Designer diesen Code ja inne InitializeComponents() - Methode generiert - die siehste nur im DesignerCode.

    Sagt dir das was: DesignerCode, kannst du von da die die komische Combo betreffenden Zeilen posten?
    Ich weiss nicht wie genau ich in den Designercode vom Button komme. Wäre es nicht einfacher die Combobox einfach neu zu erstellen und dann alle Aufrufe etc. anzupassen?
    EDIT: Bisher kam ich da nur rein über die nichtexistierenden Fehler die meine alte IDE immer generierte.
    EDIT2: Okey, habs jetzt probiert geht immer noch nicht ich guck mir mal die Datenbank nochmal an...
    EDIT3: Ich verstehs nicht. Habe eine 2. Combobox die funktioniert zum Vergleich genommen und diese hat genau dieselbe Konfiguration und tut was sie soll...
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Orion“ ()

    Okay hab den Fehler jetzt gefunden es liegt nicht ander ComboBox es liegt daran wie ich sie in die Datei schreibe weil die anderen den selben NullReferenceException-Fehler werfen. Wie schreibe ich diese am besten in eine Datei um sie wieder so abzufüllen?

    VB.NET-Quellcode

    1. ComboBox21.SelectedValue.ToString

    So scheint es ja nicht zu gehen...
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Hab es jetzt einfach mit .Text gemacht kann aber nicht prüfen ob das zurückspielen funktioniert weil ich jetzt erst noch das mit den DateTimePickern hinkriegen muss.
    EDIT: Also ich bekomm ne Exception das ich ein falsches Format verwende. Habe es aber denke ich eigentlich richtig definiert bin mir aber nicht sicher:

    VB.NET-Quellcode

    1. ValCon = Date.ParseExact(reader(4), "dd/MM/yyyy", System.Globalization.DateTimeFormatInfo.InvariantInfo, Globalization.DateTimeStyles.None)
    2. Main.DateTimePicker2.Value = ValCon

    EDIT:
    Also ich schreibe den DateTimePicker in einen String dieser wird in eine txt gespeichert. Später wird er wieder aufgerufen und dem DateTimePicker wieder zugewiesen. Das funktioniert doch über DateTimePicker1.Value.ToString später beim aufrufen dann aus der Txt
    DateTimePicker1.Value = CDate(reader(4))
    Oder nicht? :/
    Habe jetzt mal alles ausgeben lassen in MsgBoxen... Das File wird geöffnet und nach jedem Buchstaben gesplittet? Obwohl ich ";" angegeben habe... Ich verstehs langsam nicht mehr.

    VB.NET-Quellcode

    1. Dim reader = My.Computer.FileSystem.ReadAllText(path & "\Indexierung\" + auto.IsBestKeyWord)
    2. reader.Split(";"c)

    Die Ausgabe ist eben das er nach jedem einzelnen Buchstaben splittet obwohl das gar nicht so sein sollte:
    Spoiler anzeigen
    Firma,Strasse,Ort;
    Wird zu:
    F
    i
    r
    m
    a...

    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Orion“ ()

    Habe das Problem in einem neuen Thread schon gelöst. Funktioniert jetzt kann es aber sein das wenn ich einem Feld den Wert nicht zuweisen kann alle weiteren Felder fehlerhaft oder gar nicht beschrieben werden? Habe glaub ich das Speichern und zurückgeben der ComboBox Werte falsch gemacht.
    Aber kann mir jemand sagen was ich in meinem jetzigen Code ändern muss damit er mir nicht pro Tastenanschlag immer wieder die Files neu dazu listet? sieht ein bisschen doof aus wenn man 100 mal dieselbe Datei hat:

    Dazu der Code:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Linq
    3. Imports System.Environment
    4. Public Class FormAutoComplete
    5. Public _isbestkeyword As String = ""
    6. Public _iskeyword As Boolean
    7. Public woerterbuchS As New List(Of String)
    8. Public appData As String = GetFolderPath(SpecialFolder.ApplicationData)
    9. Public path As String = appData & "\Dokumente"
    10. Public Sub myForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
    11. Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
    12. Me.ListBox1.Dock = DockStyle.Fill
    13. End Sub
    14. Private Sub ListBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
    15. _isbestkeyword = Me.ListBox1.Items(Me.ListBox1.SelectedIndex)
    16. End Sub
    17. Protected Overrides ReadOnly Property ShowWithoutActivation() As Boolean
    18. Get
    19. Return True
    20. End Get
    21. End Property
    22. Public Sub RefreshList(ByVal key As String)
    23. 'Dim fileName As String
    24. Dim Files = New System.IO.DirectoryInfo(path + "\Indexierung").GetFiles("*.*", IO.SearchOption.TopDirectoryOnly)
    25. woerterbuchS.AddRange(Files.Select(Function(f) f.Name).ToArray())
    26. Dim LA() As String = woerterbuchS.ToArray
    27. Me.ListBox1.Items.Clear()
    28. find_key_arg = key & "*"
    29. Dim t() As String = Array.FindAll(LA, AddressOf find_key)
    30. If t.Count > 0 Then
    31. If key = "" Or t(t.Length - 1) = key Then
    32. _iskeyword = False
    33. Me.Hide()
    34. Else
    35. _iskeyword = True
    36. Me.ListBox1.Items.AddRange(t)
    37. Me.ListBox1.SelectedIndex = 0
    38. Me.Show()
    39. End If
    40. Else
    41. _iskeyword = False
    42. Me.Hide()
    43. End If
    44. End Sub
    45. Public ReadOnly Property IsKeyWord() As Boolean
    46. Get
    47. Return _iskeyword
    48. End Get
    49. End Property
    50. Public ReadOnly Property IsBestKeyWord() As String
    51. Get
    52. If _iskeyword = True Then
    53. Return _isbestkeyword
    54. Else
    55. Return ""
    56. End If
    57. End Get
    58. End Property
    59. Private find_key_arg As String
    60. Private Function find_key(ByVal s As String) As Boolean
    61. If s Like find_key_arg Then
    62. Return True
    63. Else
    64. Return False
    65. End If
    66. End Function
    67. End Sub
    68. End Class


    Sorry wenn ich so viel frage heute :/
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Orion“ ()