Streamreader einzelne Zeichen auslesen

  • VB.NET

Es gibt 31 Antworten in diesem Thema. Der letzte Beitrag () ist von Wolfchant.

    Streamreader einzelne Zeichen auslesen

    Heyy,
    ich möchte gerne mittels des Streamreaders einzelne Zeichen bzw. Zeichenpaare auslesen und von dem pc quasi tippen lassen.
    Er soll mir 3 Datenpaare auslesen die in der Textdatei wie folgt aussehen können:

    Bsp.: 37 038 03
    45 001 07
    52 128 12

    er soll mir dann immer jeweils die 37 eingeben, dann macht er mir nen tab (das weiß ich wohlbemerkt wie das geht, ist ja nicht soo schwer^^) und dann halt die nächste zahl bis die zeile zu ende ist und dann das selbe iner nächsten zeile.
    (die konstelation der zahlen "2zeichen", "3zeichen", "2zeichen" bleibt konstant)

    Hoffe es gibt jemanden der mir mit meinem problem helfen kann^^
    mittels des Streamreaders
    Muss es Streamreader sein?


    VB.NET-Quellcode

    1. Dim Zahlen As String
    2. Dim Paar1, Paar2, Paar3 As String
    3. Paar1 = Zahlen.Substring(0, 2) 'Ab zeichen 0, 2 Zeichen lang
    4. Paar2 = Zahlen.Substring(2, 3) 'Ab zeichen 2, 3 Zeichen lang
    5. Paar3 = Zahlen.Substring(5, 2) 'Ab zeichen 5, 2 Zeichen lang


    Die Zahlenreihe schaut doch so aus "1122233" oder "11 222 33" ?
    die reihe wäre 11 222 33
    aber danke schonmal ich probiers direkt aus.
    (außer streamreader ist mir halt nichts eingefallen :p)

    und hierbei geht das mit dem auslesen der textdatei ähnlich oder gleich wie beim streamreader?
    Dann musst du halt die Leerzeichen mitzählen.
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim Zahlen As String = "11 222 33"
    2. Dim Paar1, Paar2, Paar3 As String
    3. Paar1 = Zahlen.Substring(0, 2) 'Ab zeichen 0, 2 Zeichen lang
    4. Paar2 = Zahlen.Substring(3, 3) 'Ab zeichen 2, 3 Zeichen lang
    5. Paar3 = Zahlen.Substring(7, 2) 'Ab zeichen 5, 2 Zeichen lang
    okay ich habe das problem dass ich nicht weiß wo ich das

    Paar1 = Zahlen.Substring(0, 2) 'Ab zeichen 0, 2 Zeichen lang
    Paar2 = Zahlen.Substring(2, 3) 'Ab zeichen 2, 3 Zeichen lang
    Paar3 = Zahlen.Substring(5, 2) 'Ab zeichen 5, 2 Zeichen lang

    einbringen soll..
    zudem denke ich muss ich den reader irgendwie kenntlich machen nur leider weiß ich auch nicht wie ich das in diesem fall machen muss.


    hier mein quellcode:
    Imports System.Windows.Forms.SendKeys
    Imports System.IO


    Public Class SGG
    Dim Zahlen As String
    Dim Paar1, Paar2, Paar3 As String
    Dim FILE_NAME As String = "C:\koords.txt"

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Start.Click
    For i = 0 To 10 Step 1
    System.Threading.Thread.Sleep(1000)
    Next i
    SendKeys.Send("{TAB}")
    SendKeys.Send("{TAB}")
    SendKeys.Send("{TAB}")
    SendKeys.Send(Paar1)
    SendKeys.Send("{TAB}")
    SendKeys.Send(Paar2)
    SendKeys.Send("{TAB}")
    SendKeys.Send(Paar3)
    SendKeys.Send("{TAB}")
    SendKeys.Send("{TAB}")
    SendKeys.Send("2500")
    SendKeys.Send("{TAB}")
    SendKeys.Send("{TAB}")
    SendKeys.Send("{TAB}")
    SendKeys.Send("{TAB}")
    SendKeys.Send("{TAB}")
    SendKeys.Send("{DOWN}")
    SendKeys.Send("{DOWN}")
    SendKeys.Send("{DOWN}")
    SendKeys.Send("{DOWN}")
    SendKeys.Send("{TAB}")
    SendKeys.Send("{ENTER}")
    SendKeys.Send("{F5}")
    End Sub

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „Wolfchant“ ()

    Bitte Vb-Tag benutzen


    Alles nochmal im VB-Tag

    VB.NET-Quellcode

    1. Imports System.Windows.Forms.SendKeys
    2. Imports System.IO
    3. Public Class SGG
    4. Dim Zahlen As String
    5. Dim Paar1,
    6. Paar2, Paar3 As String
    7. Dim FILE_NAME As String = "C:\koords.txt"
    8. Private Sub Button1_Click(ByVal sender As System.Object, ByVal
    9. e As System.EventArgs) Handles Start.Click
    10. For i = 0 To 10
    11. Step 1
    12. System.Threading.Thread.Sleep(1000)
    13. Next i
    14. SendKeys.Send("{TAB}")
    15. SendKeys.Send("{TAB}")
    16. SendKeys.Send("{TAB}")
    17. SendKeys.Send(Paar1)
    18. SendKeys.Send("{TAB}")
    19. SendKeys.Send(Paar2)
    20. SendKeys.Send("{TAB}")
    21. SendKeys.Send(Paar3)
    22. SendKeys.Send("{TAB}")
    23. SendKeys.Send("{TAB}")
    24. SendKeys.Send("2500")
    25. SendKeys.Send("{TAB}")
    26. SendKeys.Send("{TAB}")
    27. SendKeys.Send("{TAB}")
    28. SendKeys.Send("{TAB}")
    29. SendKeys.Send("{TAB}")
    30. SendKeys.Send("{DOWN}")
    31. SendKeys.Send("{DOWN}")
    32. SendKeys.Send("{DOWN}")
    33. SendKeys.Send("{DOWN}")
    34. SendKeys.Send("{TAB}")
    35. SendKeys.Send("{ENTER}")
    36. SendKeys.Send("{F5}")
    37. End
    38. Sub


    Kommt drauf an was du machen willst. Wenn es bei jedem Buttonklick eingelesen werden soll dann muss es halt in das Button Click Event.
    Wenn nicht würde ich es in das Form Load Event schreiben.

    P.S.: Hoffentlich ist klar das jetzt noch nichts eingelesen wurde. Müsstest du noch davor schreiben.

    Mfg
    Firestorm
    also eigetnilch ist das was jetzt in dem quellcode ist nur ein ablauf von später mehreren folgenden. sprich bei einem klick gibt es mehrere noch folgene abläufe.
    ja nun eins meiner probleme ist Wie ich was einlese... *grins*

    ich finds übrigens klasse wie schnell ich hier antworten bekomme also tolles forum hier! ;)
    naja oben haste mein quellcode stehen und ich weiß auch nicht so genau was nicht stimmt weil ich mich schon soooo lange nichtmehr mit programmiren beschäftigt habe^^
    und egal wo ich versuche das
    "Paar1 = Zahlen.Substring(0, 2) 'Ab zeichen 0, 2 Zeichen lang
    Paar2 = Zahlen.Substring(2, 3) 'Ab zeichen 2, 3 Zeichen lang
    Paar3 = Zahlen.Substring(5, 2) 'Ab zeichen 5, 2 Zeichen lang"
    einzubringen er sagt mir immer:

    NullReferenceExpection wurde nicht behandelt
    Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

    joa ka...^^
    bin über pfingesten weg und komme erst montag wieder hoffe dann antwortet mir auch noch wer am montag..^^
    nein nein ich glaube du verstehst mich falsch. in dem textprogramm ist das wie folgt aufgelistet und dementsprechend sollte der mir das auch auslesen.

    Paar1 Paar2 Paar3
    Paar1 Paar2 Paar3
    Paar1 Paar2 Paar3
    Paar1 Paar2 Paar3
    usw...
    Ach sry haste eh da stehen. Ok warte kurz.

    Hier (Das ist jetzt VB2008, ich hoffe du kannst es einigermaßen umschreiben):
    1. Schritt: Wir brauchen eine Form (Form1), die Textdatei (Pfad: C:\Zahlen.txt), 3 Textboxen (Namen: Txt1, Txt2, Txt3) eine RichTextBox (Name: Rich1) und einen Button (Name: TeilenBt).

    2. Schritt: Variablen deklarieren (Zahlen(), Zeile As String; Paar1, Paar2, Paar3 As String; r As New System.Random)
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim Zahlen() As String
    2. Dim Zeile As String
    3. Dim Paar1, Paar2, Paar3 As String
    4. Dim r As New System.Random


    3. Schritt: Den Wert der Variablen "Zahlen" zuweisen (In das Load-Ereignis)

    VB.NET-Quellcode

    1. Zahlen = IO.File.ReadAllLines("C:\Zahlen.txt")


    4. Schritt: Nun fügst du das "Klick" Ereignis für den Button hinzu.

    VB.NET-Quellcode

    1. Private Sub TeilenBt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TeilenBt.Click
    2. End Sub

    Als erstes zählen wir die Zeilen des Textdokuments mit einer For Each-Schleife:

    VB.NET-Quellcode

    1. 'Zeilen zählen
    2. Dim i As Integer = 0
    3. For Each Line As String In Zahlen
    4. i += 1 'i ist dann die Zeilenzahl
    5. Next

    Dann suchen wir uns eine beliebige Zeile aus:

    VB.NET-Quellcode

    1. Zeile = Zahlen(r.Next(0, i))

    Jetzt kommt der eigentlich Teil, das Splitten:

    VB.NET-Quellcode

    1. Paar1 = Zeile.Substring(0, 2) 'Ab zeichen 0, 2 Zeichen lang
    2. Paar2 = Zeile.Substring(2, 3) 'Ab zeichen 2, 3 Zeichen lang
    3. Paar3 = Zeile.Substring(5, 2) 'Ab zeichen 5, 2 Zeichen lang
    4. Txt1.Text = Paar1
    5. Txt2.Text = Paar2
    6. Txt3.Text = Paar3
    7. Rich1.Text = Paar1 & vbCrLf & Paar2 & vbCrLf & Paar3


    Das ganze bewirkt, dass du jetzt auf Knopfdruck die 3 Paare hast.

    Nocheinmal der ganze Code (Bitte nicht einfach kopieren ohne oben zu lesen.
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim Zahlen() As String
    3. Dim Zeile As String
    4. Dim Paar1, Paar2, Paar3 As String
    5. Dim r As New System.Random
    6. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    7. Zahlen = IO.File.ReadAllLines("C:\Zahlen.txt")
    8. End Sub
    9. Private Sub TeilenBt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TeilenBt.Click
    10. 'Zeilen zählen
    11. Dim i As Integer = 0
    12. For Each Line As String In Zahlen
    13. i += 1
    14. Next
    15. Zeile = Zahlen(r.Next(0, i))
    16. Paar1 = Zeile.Substring(0, 2) 'Ab zeichen 0, 2 Zeichen lang
    17. Paar2 = Zeile.Substring(2, 3) 'Ab zeichen 2, 3 Zeichen lang
    18. Paar3 = Zeile.Substring(5, 2) 'Ab zeichen 5, 2 Zeichen lang
    19. Txt1.Text = Paar1
    20. Txt2.Text = Paar2
    21. Txt3.Text = Paar3
    22. Rich1.Text = Paar1 & vbCrLf & Paar2 & vbCrLf & Paar3
    23. End Sub
    24. End Class

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Pes1899.vb“ ()

    Wenn die SendKeys immer gleiche Abläufe haben, dann mach doch folgendes:

    VB.NET-Quellcode

    1. Private Sub DoInput(fileName as String)
    2. Dim pts(2) As String
    3. Dim line As String
    4. Using sr As New StreamReader(fileName)
    5. Do Until sr.EndOfStream
    6. line = sr.ReadLine
    7. pts(0) = line.Substring(0,2)
    8. pts(1) = line.Substring(3,3)
    9. pts(2) = line.Substring(7,2)
    10. 'SendKeys...
    11. Loop
    12. End Using
    13. End Sub
    okay schon vielen dank aber es geht nicht :p

    er sagt mir jetzt ich müsse von

    Txt1.Text = Paar1
    Txt2.Text = Paar2
    Txt3.Text = Paar3

    Rich1.Text = Paar1 & vbCrLf & Paar2 & vbCrLf & Paar3

    Txt1, Txt2, Txt3 und Rich1 jeweils deklarieren
    okay danke hat sich erledigt habs jetzt hinbekommen :p wusste nur nicht warum ich mir umbedingt das was ich eingebe anzeigen lassen sollte aber okay danke^^

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