Zahlenreihe in Datei einfügen

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Zahlenreihe in Datei einfügen

    Hallo,
    ich hab ein kleines Problem. Bzw. 2 aber erstmal zu dem einem.
    Ich habe einen Code mit hilfe des Forums entwicklet der mir eine Datei in eine Listbox liest und mir dann die Richtige position in der Datei reinschriebt was ich möchte. Funktioniert sau gut.
    Ist es möglich hier auch Alle zahlenwerte, an der Richtigen Position natürlich, einzutragen die ich in 2 Textboxen eingebe.
    in einer textbox steht dann "60" und ein einer anderen "70"
    hier mal der Code für eine Zeile durhcsuchen und reinschreiben.
    geht das?
    wenn ja wie stelle ich das an?
    Hab schon zig sachen verscuht, klappt aber nicht wie ich das will.

    VB.NET-Quellcode

    1. If ComboBox1.SelectedItem.ToString() = "Roboter 2.1" Then
    2. Dim lstDateiInhalt_dbk As New List(Of String)
    3. lstDateiInhalt_dbk.AddRange(IO.File.ReadAllLines(Pfadprg21dbk + "dbk__dir.dat"))
    4. Dim num_dbk = Integer.Parse(txtDbkNr.Text.Trim)
    5. Dim insertposition_dbk = lstDateiInhalt_dbk.FindIndex(Function(line) Integer.Parse(line.Split()(1)) >= num_dbk)
    6. Dim lineAtInsertPosition_dbk = lstDateiInhalt_dbk(insertposition_dbk)
    7. If Integer.Parse(lineAtInsertPosition_dbk.Split()(1)) = num_dbk Then
    8. MsgBox("Datenbanknummer ist schon vergeben an Roboter 2.1!", MsgBoxStyle.Information, "Info")
    9. Return
    10. Else
    11. Dim lstDateiInhalt_prg As New List(Of String)
    12. lstDateiInhalt_prg.AddRange(IO.File.ReadAllLines(Pfadprg21prg + "prg__dir.dat"))
    13. Dim num_prg = Integer.Parse(txtPrgNr.Text.Trim)
    14. Dim insertposition_prg = lstDateiInhalt_prg.FindIndex(Function(line) Integer.Parse(line.Split()(1)) >= num_prg)
    15. Dim lineAtInsertPosition_prg = lstDateiInhalt_prg(insertposition_prg)
    16. If Integer.Parse(lineAtInsertPosition_prg.Split()(1)) = num_prg Then
    17. MsgBox("Programmnummer ist schon vergeben an Roboter 2.1!", MsgBoxStyle.Information, "Info")
    18. Return
    19. Else
    20. Select Case MessageBox.Show("Programmnummer: " + txtPrgNr.Text + " und Datenbanknummer: " + txtDbkNr.Text + " verfügbar an Roboter 2.1!" & vbCrLf & vbCrLf & "Programm und Datenbank erstellen?", "Abfrage", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)
    21. Case Windows.Forms.DialogResult.Yes
    22. lineAtInsertPosition_dbk = String.Format(" {0} {1}", num_dbk, txtDir.Text)
    23. lstDateiInhalt_dbk.Insert(insertposition_dbk, lineAtInsertPosition_dbk)
    24. IO.File.WriteAllLines(Pfadprg21dbk + "dbk__dir.dat", lstDateiInhalt_dbk.ToArray())
    25. IO.File.WriteAllLines(Pfadprg21dbk + "dbk_" + addunterstrich(txtDbkNr.Text) + ".dat", txtDbkinhalt.Lines)
    26. lineAtInsertPosition_prg = String.Format(" {0} {1}", num_prg, txtDir.Text)
    27. lstDateiInhalt_prg.Insert(insertposition_prg, lineAtInsertPosition_prg)
    28. IO.File.WriteAllLines(Pfadprg21prg + "prg__dir.dat", lstDateiInhalt_prg.ToArray())
    29. IO.File.WriteAllLines(Pfadprg21prg + "prg_" + addunterstrich(txtPrgNr.Text) + ".dat", txtPrginhalt.Lines)
    30. System.Threading.Thread.Sleep(200)
    31. MsgBox("Programm " + (txtPrgNr.Text) + " mit dazugehöriger Datenbank " + (txtDbkNr.Text) + " an Roboter 2.1 erstellt!", MsgBoxStyle.Information, "Info")
    32. Return
    33. Case Windows.Forms.DialogResult.No
    34. End Select
    35. End If
    36. End If
    37. End If

    @Gottric Wie äußert es sich, dass es nicht klappt?
    Wie ist der Input, wie der gewünschte Output?
    Setze einen Haltepunkt rein und überzeuge Dich, dass Dein Code genau das tut, was er tuen soll. Lerne zu debuggen.
    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).
    VB-Fragen über PN / Konversation werden ignoriert!

    Gottric schrieb:

    Hab es!
    Das ist doch keine Lösung!
    Nimm 2 NumericUpDown-Controls, die kannst Du so gegeneinander verriegeln, dass das Maximum des Von-Controls kleiner ist als das Minimum des Bis-Controls.
    Und dann mit den .Value-Properties arbeiten.
    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).
    VB-Fragen über PN / Konversation werden ignoriert!

    Gottric schrieb:

    natürlich ist das keine Lösung, aber so kann ich den zahlenbereich angeben und das funktioniert wenn ich es in meinen Code einpflege.


    Wenn du was eingibst geht es. Gebe aber ich was fieses ein, oder @RodFromGermany gibt da seine Rouladen ein, fliegt dir alles um die Ohren :P
    Entweder du arbeitest hier mit TryParse (oder ähnlichem) oder du verhindert von vornherein das da einer Quatsch eingibt und nutzt das NumericUpDown.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    mrMo schrieb:

    gibt da seine Rouladen ein
    "Roulade mit Klößen" bitte. :D
    @Gottric Natürlich kannst Du Dir ne NumericTextBox bauen. Versuch das mal ohne Vorlage.
    Aboniere das KeyDown-Event und los.
    Wenn Du fertig bist, pack die "Roulade mit Klößen" in die Zwischenablage und füge sie da ein. ;)
    Sollte aber für den Anfang reichen
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    Hallo, sorry für die später Antwort.
    Ich habe reinprogrammiert dass nur Nummern dort eingegeben werden können:

    VB.NET-Quellcode

    1. Select Case Asc(e.KeyChar)
    2. Case 48 To 57, 8, 32
    3. Case Else
    4. e.Handled = True
    5. End Select

    sowie auch dass die Zahl von immer kleiner sein muss als die Zahl bis:

    VB.NET-Quellcode

    1. If Integer.Parse(txterstellenvon.Text) > Integer.Parse(txterstellenbis.Text) Then
    2. MsgBox("Die Zahl -von- muss kleiner sein als die Zahl -bis-!", MsgBoxStyle.Critical, "Fehler")
    3. Return
    4. End If


    Das sollte mir doch genug sicherheit geben dass dort kein Fehler auftreten kann. dann musss man ja schon mit Absicht etwas falsches reinkoprieren. Soviel Verantwortung erwarte ich einfach von den Leuten die diese Anwendung benutzen dass dies nicht getan wird.

    Gottric schrieb:

    VB.NET-Quellcode

    1. Case 48 To 57, 8, 32
    Das Leerzeichen kannst Du da getrost rausnehmen, nimm aber die Cursortasten mit rein.
    Wenn Du das im KeyDown-Event machst, kannst Du die Tasten im Klartext da reinschreiben:

    VB.NET-Quellcode

    1. Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown
    2. Select Case e.KeyCode
    3. Case Keys.D0 To Keys.D9, Keys.Back, Keys.Delete, Keys.Left, Keys.Right, Keys.End
    4. Case Else
    5. e.SuppressKeyPress = True
    6. End Select
    7. End Sub
    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).
    VB-Fragen über PN / Konversation werden ignoriert!