String verhaut die Ausgabe

  • VB.NET

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von SpaceyX.

    String verhaut die Ausgabe

    Morgen miteinander :)

    Ich habe folgendes Problem und zwar habe ich mir für nen Facebook Chat Code Manager erstellt .
    Und das dieser variabel bleibt list er nun text Dateien aus.

    Das sieht dann wie folgt aus :
    Listbox 1 wird nur der Dateiname ohne Endung = ok

    Wird der Name in Listbox1 angeklickt wird das entsprechende Textdokument ausgelesen
    und der inhalt in die Zwischenablage kopiert = ok

    NUN DAS PROPLEM 1:
    Wie lautet der Befehl - EINFÜGEN - als Code ? (( Ich meine so wie - RECHTE MAUSTASTE - EINFÜGEN ))

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. '(( form1 ))beim öffnen der form ordner erstellen und auslesen
    4. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    5. TopMost = True
    6. ListBox1.Items.Clear()
    7. System.IO.Directory.CreateDirectory("C:\EMOTICONS")
    8. 'ausgewählten ordner auslesen und in listbox schreiben-ohne endung -txt
    9. For Each File As String In System.IO.Directory.GetFiles("C:\EMOTICONS", "*.txt")
    10. ListBox1.Items.Add(System.IO.Path.GetFileNameWithoutExtension(File))
    11. Next
    12. End Sub
    13. '(( listbox1 )) gewählte datei bei selection an Listbox.1 übergeben.
    14. Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
    15. Try
    16. If ListBox1.SelectedIndex < ListBox1.Items.Count Then
    17. ListBox1.SelectedIndex = ListBox1.SelectedIndex.ToString
    18. ListBox1.SelectionMode = SelectionMode.One
    19. TextBox1.Text = ListBox1.Items(ListBox1.SelectedIndex).ToString
    20. End If
    21. 'selectet auswahl in textbox schreiben
    22. Dim Pfad As String = "C:\EMOTICONS\" & ListBox1.Items(ListBox1.SelectedIndex).ToString
    23. TextBox1.Text = System.IO.File.ReadAllText(Pfad & ".txt")
    24. ' Dim sauber As String = (TextBox1.Text)
    25. ' sauber = Replace(sauber, vbLf, "").Replace("", "")
    26. ' TextBox1.Text = sauber
    27. Catch ex As Exception
    28. End Try
    29. 'selectet auswahl in zwischenablage kopieren
    30. Try
    31. My.Computer.Clipboard.SetText(TextBox1.Text)
    32. Catch ex As Exception
    33. End Try
    34. ListBox1.Sorted = True
    35. End Sub
    36. '(( listbox1 ))selected auswahl mit rechter maustaste aufheben
    37. Private Sub FileListBox1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown
    38. If e.Button = Windows.Forms.MouseButtons.Right Then
    39. ListBox1.SelectedIndex = ListBox.NoMatches
    40. TextBox1.Clear()
    41. My.Computer.Clipboard.Clear()
    42. End If
    43. End Sub
    44. 'ordner öffnen
    45. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    46. System.Diagnostics.Process.Start("explorer", "C:\EMOTICONS")
    47. End Sub
    48. 'ordner auslesen refresh
    49. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    50. ListBox1.Items.Clear()
    51. System.IO.Directory.CreateDirectory("C:\EMOTICONS")
    52. 'ausgewählten ordner auslesen und in listbox schreiben-ohne endung -txt
    53. For Each File As String In System.IO.Directory.GetFiles("C:\EMOTICONS", "*.txt")
    54. ListBox1.Items.Add(System.IO.Path.GetFileNameWithoutExtension(File))
    55. Next
    56. TextBox1.Clear()
    57. My.Computer.Clipboard.Clear()
    58. End Sub
    59. End Class


    ENDE PROBLEM 1 :!:

    PROBLEM 2: (( Der String verhaut die Ausgabe )

    Folgender Aufbau:
    Es werden mehrere Textboxen zeilenweise in eine Textdatei eingelesen = OK

    Nun habe ich die gefüllte Textdatei deren Inhalt ich jetzt wie folgt nutzen möchte (( SIHE CODE 2 )) - doch ab (( C )) gibts Fehler in der Ausgabe :huh:

    VB.NET-Quellcode

    1. Dim lines() As String = System.IO.File.ReadAllLines("C:\EMOTICONS\keys\keys.cfg")
    2. '(( A-Z & a-z )) in code umsetzen
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. Dim a As String = TextBox1.Text
    5. a = a.Replace("A", lines(0).ToString)
    6. a = a.Replace("B", lines(1).ToString)
    7. a = a.Replace("C", lines(2).ToString)
    8. a = a.Replace("D", lines(3).ToString)
    9. a = a.Replace("E", lines(4).ToString)
    10. a = a.Replace("F", lines(5).ToString)
    11. a = a.Replace("G", lines(6).ToString)
    12. a = a.Replace("H", lines(7).ToString)
    13. a = a.Replace("I", lines(8).ToString)
    14. a = a.Replace("J", lines(9).ToString)
    15. a = a.Replace("K", lines(10).ToString) 'usw
    16. TextBox2.Text = a


    VIELENN DANK IM VORAUS :rolleyes:

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

    zu 1.: Meinst Du so was:

    VB.NET-Quellcode

    1. If Clipboard.ContainsText Then
    2. TextBox1.Text = Clipboard.GetText
    3. End If

    zu 2.: Ich kann da nichts erkennen. Machst Du so was wie eine Versachlüsselung?
    Ersetzt Du ein "A" durch ein "F" und danach das "F" durch ein "X"? Damit ist die Umkehrung dieses Verfahrens nicht möglich.
    Was genau geht da schief?
    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!
    Ja zu 1 habe ich so was gemeint ich wollte den Text aus der Zwischenablage über den einfügen befehl in z.b (( Textdatei )) die ich mit der Maus vorher anklicke setzen !

    Zu 2 nein das ist keine Verschlüsselung z.b:

    VB.NET-Quellcode

    1. Dim a As String = TextBox1.Text
    2. a = a.Replace("A", "LOL")
    3. TextBox2.Text = a


    Wird -A aus Textbox1 als -LOL in Textbox2 ausgegeben (SO GINGE ES)
    Also line(0) ist nix anderes als - LOL -nur das ich es aus einer Textdatei abrufe.
    Und da scheint auch das Problem zu sein (ÄRGER MIT DEN 2 STRINGS)
    Geb ich danach z.b - GEHT1- zum test ein - Kommt das raus =LOL7LOL7EHT5HT2 ?(

    VB.NET-Quellcode

    1. Dim lines() As String = System.IO.File.ReadAllLines("C:\EMOTICONS\keys\keys.cfg")
    2. Dim a As String = TextBox1.Text
    3. a = a.Replace("A", "LOL")
    4. TextBox2.Text = a
    Mit der Datei geht es ganz genau so:

    VB.NET-Quellcode

    1. If Clipboard.ContainsText Then
    2. IO.File.WriteAllText("DEIN_PFAD", Clipboard.GetText)
    3. ' oder
    4. IO.File.AppendAllText("DEIN_PFAD", Clipboard.GetText)
    5. End If
    Mit der Ersetzung ist es genau so wie ich dachte, dass Zeichen, die ersetzte Zeichen sind, durch weitere Ersetzungen wieder ersetzt werden.
    Setz da mal einen Haltepunkt auf die 1. Zeile: a = a.Replace("A", lines(0).ToString) und sieh Dir den Inhalt der Variablen a permanent im Überwachen-Fenster an.
    -----
    @TVX: Kein Plan, was das ganze sein / werden soll.
    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!

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

    OK, falsch verstanden.
    Probier mal dies:

    VB.NET-Quellcode

    1. 'TextBox1.SelectionLength = 0 ' falls aus Versehen Text markiert wurde
    2. TextBox1.SelectedText = Clipboard.GetText
    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!
    Entschuldige das die Antworten so lang dauern aber ich muss samstags immer bis ca 16:00 Arbeiten - wir haben nen eigenen Betrieb und machen Sachen für Gaststätten usw.

    Ich denke das iss es noch nicht ganz ( Stell dir vor du hast in deinem Programm eine Textbox die wenn sie gefüllt wird , auch gleichzeitig in die Zwischenablage kopiert wird (( My.Computer.Clipboard.SetText(TextBox1.Text) ))
    Dieser Text der nun in der Zwischenablage liegt soll nun z.b in ein Feld von einer Webseite kopiert werden .
    Und zwar wie folgt : Ich klicke das Feld in das ich schreiben möchte z.b auf der Webseite meiner Wahl mit der Linken Maustaste an (so das der cursor darin blinkt) und möchte dann mit F1 ( Registrierter Hotkey ) den Text aus meiner Textbox1 in das Feld auf der Webseite kopieren :D



    Woran der erste Code hängt weis ich jetzt auch und zwar folgendes .

    VB.NET-Quellcode

    1. Option Strict On
    2. Imports System.IO
    3. Public Class Form3
    4. 'datei zeilenweise auslesen (( - lines(1).ToString) - ))
    5. Dim lines() As String = System.IO.File.ReadAllLines("C:\EMOTICONS\keys\keys.cfg")
    6. '(( A-Z & a-z )) in code umsetzen
    7. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    8. Dim a As String = TextBox1.Text
    9. a = a.Replace("A", lines(0).ToString)
    10. a = a.Replace("B", lines(1).ToString)
    11. a = a.Replace("C", lines(2).ToString)
    12. a = a.Replace("D", lines(3).ToString)
    13. a = a.Replace("E", lines(4).ToString)
    14. a = a.Replace("F", lines(5).ToString)
    15. a = a.Replace("G", lines(6).ToString)
    16. a = a.Replace("H", lines(7).ToString)
    17. a = a.Replace("I", lines(8).ToString)
    18. a = a.Replace("J", lines(9).ToString)
    19. a = a.Replace("K", lines(10).ToString)
    20. a = a.Replace("L", lines(11).ToString)
    21. a = a.Replace("M", lines(12).ToString)
    22. a = a.Replace("N", lines(13).ToString)
    23. a = a.Replace("O", lines(14).ToString)
    24. a = a.Replace("P", lines(15).ToString)
    25. a = a.Replace("Q", lines(16).ToString)
    26. a = a.Replace("R", lines(17).ToString)
    27. a = a.Replace("S", lines(18).ToString)
    28. a = a.Replace("T", lines(19).ToString)
    29. a = a.Replace("U", lines(20).ToString)
    30. a = a.Replace("V", lines(21).ToString)
    31. a = a.Replace("W", lines(22).ToString)
    32. a = a.Replace("X", lines(23).ToString)
    33. a = a.Replace("Y", lines(24).ToString)
    34. a = a.Replace("Z", lines(25).ToString)' Bis hier gehts eiwandfrei
    35. a = a.Replace("a", lines(26).ToString) ' Und das ist der springende Punkt ( der kann das kleine und das grosse A nicht auseinanderhalten ( AB HIER GEHT NICHTS MEHR) X(
    36. TextBox2.Text = a
    37. End Sub
    38. Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    39. TopMost = True
    40. End Sub
    41. End Class


    LG Andre... 8|

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

    @TVX: Tut mir Leid, ich kann das nicht nachvollziehen.
    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!
    VB2010.
    Ich hab Dein Problem wohl immer noch nicht ganz verstanden. :S
    Hat es Zweck, dass Du den String, wo Du die Ersetzungen durchführst, zerlegst, damit die Ersetzungen nur im interessierendenn Teil durchgeführt werden?
    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!
    Nein nicht ganz
    der soll das einfach nur tauschen - A = ( 1487894148787/)

    Das Problem ist von gross A -Z geht super aber dann noch klein a-z dranhänge geht nichts mehr !

    az = az.Replace("A", lines(1).ToString)
    az = az.Replace("a", lines(26).ToString)

    die beiden zusammen und es knallt ?( geht nicht
    Was steht da in az,
    was in lines(1)
    was in lines(26) :?:
    Kann es sein, dass Du die Null-basierten Indizes außer Acht gelassen hast?
    Dass Du ggf. dies meinst:

    VB.NET-Quellcode

    1. az = az.Replace("A", lines(0).ToString)
    2. az = az.Replace("a", lines(25).ToString)
    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!
    Guten Morgrn

    Das Problem ist volgendes :

    so gehts
    TextBox2.Text = TextBox1.Text.Replace("A", "aaa").Replace("a", "bbb")

    so wird a gegen die Zahlenreihe ersetzt


    so gehts nicht:

    TextBox2.Text = TextBox1.Text.Replace("A", Textbox 1.text).Replace("a", Textbox 2.text)

    Hier habe ich jetz texbx1 als aaa und textbox2 als bbb
    Drücke ich jetz gross a kommt das raus (( bbbbbbbbbbbb ))

    So wie das grosse und das kleine A zusammen in der abfrage verwendet werden und ich das zu wechselde aus na Textbox bezihe oder einem String kommt nur noch kake raus !

    LG Andre
    Nicht, dass wir aneinander vorbei reden.

    RodFromGermany schrieb:

    Was steht da in az,
    was in lines(1)
    was in lines(26) :?:

    Schreib mal auf, wie es vorher aussieht und wie es hinterher aussehen soll.
    Ist es sinnvoll, dass Du nicht TextBox1.Text bearbeitest, sondern TextBox1.Lines?
    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!
    UND JETZ DAS WAS NICHT GEHT:

    VB.NET-Quellcode

    1. '(( A-Z & a-z )) in code umsetzen
    2. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    3. Dim a As String = TextBox1.Text.ToString
    4. a = a.Replace("A", lines(1).ToString)
    5. a = a.Replace("B", lines(1).ToString)
    6. a = a.Replace("C", lines(2).ToString)
    7. a = a.Replace("D", lines(3).ToString)
    8. a = a.Replace("E", lines(4).ToString)
    9. a = a.Replace("F", lines(5).ToString)
    10. a = a.Replace("G", lines(6).ToString)
    11. a = a.Replace("H", lines(7).ToString)
    12. a = a.Replace("I", lines(8).ToString)
    13. a = a.Replace("J", lines(9).ToString)
    14. a = a.Replace("K", lines(10).ToString)
    15. a = a.Replace("L", lines(11).ToString)
    16. a = a.Replace("M", lines(12).ToString)
    17. a = a.Replace("N", lines(13).ToString)
    18. a = a.Replace("O", lines(14).ToString)
    19. a = a.Replace("P", lines(15).ToString)
    20. a = a.Replace("Q", lines(16).ToString)
    21. a = a.Replace("R", lines(17).ToString)
    22. a = a.Replace("S", lines(18).ToString)
    23. a = a.Replace("T", lines(19).ToString)
    24. a = a.Replace("U", lines(20).ToString)
    25. a = a.Replace("V", lines(21).ToString)
    26. a = a.Replace("W", lines(22).ToString)
    27. a = a.Replace("X", lines(23).ToString)
    28. a = a.Replace("Y", lines(24).ToString)
    29. a = a.Replace("Z", lines(25).ToString)
    30. a = a.Replace("a", lines(2).ToString)'AB HIER GIBTS MIST
    31. a = a.Replace("b", lines(3).ToString)
    32. a = a.Replace("c", lines(0).ToString)
    33. a = a.Replace("d", lines(1).ToString)
    34. a = a.Replace("e", lines(2).ToString)
    35. a = a.Replace("f", lines(3).ToString)
    36. a = a.Replace("g", lines(0).ToString)
    37. a = a.Replace("h", lines(1).ToString)
    38. a = a.Replace("i", lines(2).ToString)
    39. a = a.Replace("j", lines(3).ToString)
    40. a = a.Replace("k", lines(0).ToString)
    41. a = a.Replace("l", lines(1).ToString)
    42. a = a.Replace("m", lines(2).ToString)
    43. a = a.Replace("n", lines(3).ToString)
    44. a = a.Replace("o", lines(0).ToString)
    45. a = a.Replace("p", lines(1).ToString)
    46. a = a.Replace("q", lines(2).ToString)
    47. a = a.Replace("r", lines(3).ToString)
    48. a = a.Replace("s", lines(0).ToString)
    49. a = a.Replace("t", lines(1).ToString)
    50. a = a.Replace("u", lines(2).ToString)
    51. a = a.Replace("v", lines(3).ToString)
    52. a = a.Replace("w", lines(0).ToString)
    53. a = a.Replace("x", lines(1).ToString)
    54. a = a.Replace("y", lines(2).ToString)
    55. a = a.Replace("z", lines(3).ToString)
    56. TextBox2.Text = a


    Hier ne Fehler exe die erklärts kurtz und bündig:
    www37.zippyshare.com/v/8391940/file.html

    Der verwendete code steht auf dem Button - nur draufklicken uhn und ausgabe ansehen !

    PS was für ein vb benutzt du ? 8-10-12

    LG Andre
    VB2010.
    Das, was da passiert, ist völlig logisch.
    Was soll denn Deiner Meinung nach passieren?
    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!
    Ja es hat mich aber anfangs verwundert da ich mit Replace das erste mal gearbeitet habe in dem Umfang
    habs mir mal genauer angeschaut und dann ist mir das verhalten klar geworden
    da ich Replace normal nur ein oder zwei mal nutze war ich darüber noch nicht gestolpert !

    Dank dier :D
    Hi
    mach' das nicht mit lauter Replaces... For-Schleife über alle Chars, in einem Dictionary abfragen, welcher Wert dem anderen zugeordnet ist und mit einem StringBuilder verknüpft:

    VB.NET-Quellcode

    1. Dim replacements As New Dictionary(Of Char, String)()
    2. replacements.Add("A"c, lines(...))
    3. replacements.Add("B"c, lines(...))
    4. '... oder Aequivalent
    5. Dim output As New System.Text.StringBuilder() 'Zielpuffer
    6. For Each c As Char In inputString
    7. Dim p As String = Nothing
    8. If replacements.TryGetValue(c, p) Then 'sofern der Wert im Dictionary steht, wird er an die Ausgabe angehaengt
    9. output.Append(p)
    10. Else
    11. output.Append(c) 'ansonsten wird der urspruengliche Buchstabe angehaengt
    12. End If
    13. Next
    14. output.ToString() 'Rueckgabewert enthaelt den internen String.

    Bevor man sich mit den ganzen String.Replace-Funktionen den davon wachsenden Bart schmückt, schreibt man's lieber anders.
    Sachen, die bereits Strings sind (TextBox.Text) musst du übrigens nicht nochmal als String ausgeben lassen.

    Gruß
    ~blaze~
    Wenn Du Dich mal ganz scharf erinnerst. Genau das wurde Dir schon vor ein paar Tagen gesagt, dass Du ein Dictionary verwenden sollst, aber da gab Dir ja keiner gleich nen Code, deshalb war es wohl zu uninteressant, sich gleich mit einer besseren Lösung zu befassen.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o