Bestimmten Zeileninhalt überschreiben

  • Allgemein

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

    Bestimmten Zeileninhalt überschreiben

    Hi, ich habe folgenden Code mit dem ich ein Element in einer txt ersetzen möchte. Das funktioniert nur leider nicht.

    VB.NET-Quellcode

    1. Do Until InStr(Zeile, Parameter) <> 0
    2. i += 1
    3. Zeile = ReadLine(txtDIMy.Text, i)
    4. Loop
    5. Alle_elemente = Zeile.Split("#")
    6. For i = 0 To Alle_elemente.Count - 1
    7. Next
    8. Replace(Zeile, Alle_elemente(3), wert)


    Ich suche erst nach der entsprechenden Zeile, dann zerlege ich sie (Elemente sind durch "#" getrennt) und möchte das 3. Element mit einem Wert ersetzen
    Es tritt kein Fehler auf, es passiert nur nichts. Das ist ein Überbleibsel aus dem Einlesecode. Ich weiß nicht, ob ich das für Alle_Elemente(3) noch brauche...
    Der sah so aus:

    VB.NET-Quellcode

    1. Do Until InStr(Zeile, Parameter) <> 0
    2. i += 1
    3. Zeile = ReadLine(txtDIMy.Text, i)
    4. Loop
    5. Alle_elemente = Zeile.Split("#")
    6. For i = 0 To Alle_elemente.Count - 1
    7. Wert_1 = Alle_elemente(3)
    8. Next
    also ich würde sagen du brauchst die for i...to schleife am ende nich ;)
    und die zuweisung sollte wohl anders herum erfolgen

    VB.NET-Quellcode

    1. Alle_elemente(3) = DerNeueWertDenDeineZahlHabenSoll


    mach das mal schritt für schritt mit F8, dann kannst auch immer die Maus über die Variabeln halten und weißt was fürn Wert die haben un pb das der Wert is den du willst das die haben. UNd weißt dann wo was verkejrt läuft

    VB.NET-Quellcode

    1. Modul = "Zylinderschalen mit Ausschnitt"
    2. Do Until InStr(modulzeile, Modul) <> 0
    3. i += 1
    4. modulzeile = ReadLine(txtDIMy.Text, i)
    5. Loop
    6. Parameter = "10096#1#da#" 'String nach dem gesucht werden soll
    7. Do Until InStr(Zeile, Parameter) <> 0
    8. i += 1
    9. Zeile = ReadLine(txtDIMy.Text, i)
    10. Loop
    11. Alle_elemente = Zeile.Split("#")
    12. For i = 0 To Alle_elemente.Count - 1
    13. Stutzenaußendurchmesser = CDbl(Alle_elemente(3).Replace(".", ","))
    14. Next
    15. Value = CValue.CreateDoubleParamValue(Stutzenaußendurchmesser)
    16. model = session.CurrentModel()
    17. ParaOwner = model
    18. para = ParaOwner.GetParam("Stutzendurchmesser")
    19. para.SetScaledValue(Value, Nothing)


    Das ist mein Code, in dem eine Textdatei eingelesen wird. Es wird nach einem String gesucht und dann der Wert der in der Zeile steht, übergeben.
    Das Ganze soll aber auch umgekehrt funktionieren. Der Wert soll in die Textdatei an die richtige Stelle geschrieben werden.
    Die Textdatei sieht so aus:

    Quellcode

    1. 10090#1###1. Ausschnitt-Bez./Pos.#1. opening name/item#
    2. 17433#1##·111#B##
    3. 10091#1##2#Art des Ausschnitts#type of opening#
    4. 12133#0#ph##Druck aus hydrostatischer Säule#pressure by hydrostatic column#
    5. 10092#1#DIMy#90#Material#material#
    6. 9973#0### ##
    7. 9972#1### ##
    8. 9971#1### ##
    9. 11161#1#vs#1#Schweißnahtfaktor, Stutzenrohr#joint efficiency, nozzle tube#
    10. 10094#0#DIMy##V-Scheibe#pad#
    11. 17336#1### ##
    12. 10096#1#da#457.5#Außendurchmesser#outer diameter#
    13. 10097#1#ss#28.5#vorh Wanddicke#actual wall thickness#
    14. 10098#1#c1#0#Herstellungstoleranz#manufacturing tolerance#
    15. 10099#1#c2#0#Abnutzungszuschlag#corrosion allowance#
    16. 10100#1#ls#50#vorh Stutzenlänge#actual length of nozzle#
    17. 10101#0#l's##innerer Überstand#protruding length#
    18. 10102#1#x#0#Abstand zur nächsten Störstelle#distance to nearest discontinuity#
    19. 10105#0#Hf##Blockflanschhöhe#thickness of butted flange#
    20. 10103#0#b##Scheibenbreite / Blockflanschbreite#width of pad reinforcement / of butted flange#
    21. 10104#0#h##Scheibendicke#thickness of a pad reinforcement#
    22. 20090#1###2. Ausschnitt-Bez./Pos.#2. opening name/item#
    23. 27433#1##·15#B##
    24. 20091#1##5#Art des Ausschnitts#type of opening#
    25. 22133#0#ph##Druck aus hydrostatischer Säule#pressure by hydrostatic column#
    26. 20092#0#DIMy##Material#material#
    27. 21161#0#vs##Schweißnahtfaktor


    Ich würde da z.b. 457.5 suchen bzw ersetzen...
    Vielleicht gehst Du so ran:

    VB.NET-Quellcode

    1. Dim Lines() As String = System.IO.ReadAllLines(DEINE_DATEI)
    2. Dim i As Integer = 0
    3. For Each Line As String In Lines
    4. If Line.Contains(EIN_TEXT) Then
    5. ' oder
    6. 'If Not Line.Contains(EIN_TEXT) Then
    7. Dim Parts() As String = Line.Split("#"c)
    8. Parts(2) = "bla"
    9. ' noch wetrwas tun, zurückspeichern, ...
    10. End If
    11. i += 1
    12. Next
    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!
    Das nenn ich C&P-Bremse. :D :D :D
    Probier mal

    VB.NET-Quellcode

    1. Dim Lines() As String = System.IO.File.ReadAllLines(DEINE_DATEI)
    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!