TextBox Suche

  • VB.NET

Es gibt 63 Antworten in diesem Thema. Der letzte Beitrag () ist von Xylon.

    @programmer71:
    Okay dann hänge ich mich da mal ein bisschen rein.

    Edit:
    Ähja okay sieht ziemlich kompliziert aus. Ich muss ja aber auch irgendwie suchen. ?( Wenn ich jetzt in der txt1 von 9. Zeichen aus suchen will, kann ich RegEx nicht benutzten, weil die Benutzer eingabe immer unterschiedlich ist. Und wenn ich jetzt das Lerrzeichen RegEx benutzten würde, würde das gehen? Also
    "\s........\s" für die ersten 8 Zahlen nach dem ersten leerzeichen in der txt1? Wenn ja, wie mache ich dann überhaupt eine Suche? Und geht das weitersuchen dann automatisch?
    Bin gerade ziemlich verwirrt, mache das ja wie gesagt zum ersten mal :S

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Xylon“ ()

    @programmer71
    Man das ist echt verdammt kompliziert. Also mein momentaner Code sieht so aus, und da passiert nichts:

    VB.NET-Quellcode

    1. Dim temp1 As String = Mid(TextBox1.Text, 9, 8)
    2. Dim searchstart As New Regex("^")
    3. Dim searchend As New Regex("$")
    4. Dim searchtxtstartend As New Regex("\s........\n")
    5. Dim temp As New Regex("\s........\s")
    6. Dim matches As MatchCollection = searchtxtstartend.Matches(temp1)
    7. If RichTextBox3.TextLength > 1 Then
    8. For Each searchtxtstartend In matches
    9. TextBox4.Text = searchtxtstartend.ToString
    10. Next
    11. End If
    @programmer71: Okay mache ich. Kann man auch irgendwie feststellen, wo sich der Wert dann befindet? Das muss unbedingt sein, damit ich jedem Wert eine Adresse zuordnen kann.

    Edit:
    Um das nochmal zu verdeutlichen: Ich brauche eine Suchfunktion die startet, sobald Button1 geklickt wurde.
    So würde ich das gerne machen:
    rtb3, suche nach Wert aus txt1 + rtb2, suche nach dem Wert aus txt1
    und der Wert aus der rtb2 ist besonders wichtig. Ich muss wissen wo dieser Wert ist, also z.B. steht an 500000ster Stelle. Denn es ist so, dass die ersten beiden Hexadezimalen Zahlen die Adresse 8000000 haben, die nächsten beiden 80000001 usw. Ist das überhaupt möglich? Sonst lasse ich es besser gleich...

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Xylon“ ()

    Ja genau, alte und nicht-OOP-gerechte Funktionen rocken!

    ...
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    @programmer71: und @Lukas: Bitte meinen Edit oben lesen!

    VB.NET-Quellcode

    1. Dim tempcode As String = Mid(TextBox1.Text, 10, 8)
    2. Dim rtempcode As String = Mid(RichTextBox3.Text, tempcode, 8)
    3. Dim r2tempcode As String = Mid(RichTextBox2.Text, tempcode, 8)
    4. If RichTextBox3.Text.Contains(tempcode) Then
    5. TextBox4.Text = tempcode & Space(1) + rtempcode
    6. ElseIf RichTextBox2.Text.Contains(tempcode) Then
    7. TextBox5.Text = tempcode & Space(1) + r2tempcode
    8. End If

    So erhalte ich die Werte die ich brauche. Das Problem ist halt, kann ich so auch sagen an welcher Stelle die sich befinden?

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

    @programmer71
    Ich habe jetzt mal ein wenig gegoogelt und gesucht. Ich finde aber keine Möglichkeit herauszufinden wo sich der Wert gerade befindet...

    Edit:

    VB.NET-Quellcode

    1. Dim tempcode As String = Mid(TextBox1.Text, 10, 8)
    2. 'Hiermit wird die Stelle angegeben, wo der Wert (tempcode) zuerst steht. heißt also die boxen werden immer von 80000000 durchsucht.
    3. 'Dim math As Integer = RichTextBox3.Text / difference
    4. Select Case RichTextBox3.Text.Contains(tempcode) And RichTextBox2.Text.Contains(tempcode)
    5. Case 1
    6. TextBox4.Text = Mid(RichTextBox3.Text, tempcode)
    7. TextBox5.Text = Mid(RichTextBox2.Text, tempcode)
    8. 'variable1 muss geändert werden, weil so nur der wert entsteht, an welcher stelle dieser ist.
    9. Dim variable1 As Integer = InStr(RichTextBox2.Text, tempcode)
    10. Dim res04 As String = Hex(variable1)
    11. Dim adress As String = Mid(TextBox1.Text, 1, 2)
    12. If Hex(variable1).Length = 1 And adress = "04" Then
    13. TextBox2.Text = "0400000" + Hex(res04) & Space(1) + tempcode
    14. ElseIf Hex(variable1).Length = 2 And adress = "04" Then
    15. TextBox2.Text = "040000" + Hex(res04) & Space(1) + tempcode
    16. ElseIf Hex(variable1).Length = 3 And adress = "04" Then
    17. TextBox2.Text = "04000" + Hex(res04) & Space(1) + tempcode
    18. ElseIf Hex(variable1).Length = 4 And adress = "04" Then
    19. TextBox2.Text = "0400" + Hex(res04) & Space(1) + tempcode
    20. ElseIf Hex(variable1).Length = 5 And adress = "04" Then
    21. TextBox2.Text = "040" + Hex(res04) & Space(1) + tempcode
    22. ElseIf Hex(variable1).Length = 6 And adress = "04" Then
    23. TextBox2.Text = "04" + Hex(res04) & Space(1) + tempcode
    24. ElseIf Hex(variable1).Length = 7 Or 8 And adress = "04" Then
    25. MsgBox("Somethin went wrong!", MsgBoxStyle.Critical, "Error")
    26. Exit Sub

    Ja ich weiß, könnte man einfacher schreiben, habs aber gerne so. Das einzige, was hierbei nicht richtig ist, ist das InStr.
    Wie ich schon gesagt habe, ist in der bin Datei jede 32 bit Zahl eine Adresse. Und ich möchte gerne den Wert, der letztenendes in der rtb3 gefunden wird, zu einer adresse wird. Wie könnte man das angehen?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Xylon“ ()

    Versuche es mal so:

    VB.NET-Quellcode

    1. Dim suchbegriff As [String] = "10"
    2. (From m In Regex.Matches(RichTextBox1.Text, [String].Format("(^|(?<=\.\s))(\w|\s|,)*{0}(\w|\s|{0}|,)*?\.", suchbegriff), RegexOptions.IgnoreCase)m.Value).ToList().ForEach(Sub(s As [String]) RichTextBox2.Text += " " & s)


    In RichTextBox2 würde dann hier die Zeile ausgegeben.
    Mhh ja die Frage ist nur obs dadurch leichter wird. Ein 32bit wert ist immer +4 (in hex). Und die Adressen beginnen von 80000000 - 81800000. Gibts vielleicht ne Möglichkeit, vielleicht mit RegEx die Werte immer als 32bit Wert zu zählen und dem Programm zu sagen das ein Wert dann + 4 in hex ist?
    Ich sehe da nur die Möglichkeit nach dem Auslesen zu konvertieren.
    Dann kannste auch an den Werten rumspielen.
    Also in Integer konvertieren (32 bit-Ganzzahl) und dann in Hexadezimal + 4!
    Die Frage ist, ob der Zwischenschritt notwendig ist...
    @programmer71
    Ehrlich gesagt habe ich den nur für mich gemacht :whistling: . Ich probiers gleich mal aus, achja und guten morgen erstmal xD.

    VB.NET-Quellcode

    1. Dim variable1 As UInteger = Hex(InStr(RichTextBox2.Text, tempcode)) + Hex(4)


    Sollte klappen oder?

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