Nach einem wort in einer .txt datei suchen und dieses bearbeitet zurückgeben

  • VB6

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

    Nach einem wort in einer .txt datei suchen und dieses bearbeitet zurückgeben

    Hallo zusammen,

    Ich habe eine .txt datei und möchte dass nach einem bestimmten Wortausdruck gesucht wird. Dieser soll minimal verändert und ersetzt werden. Leider gibt es in VB5 die replace funktion nicht also ist alles etwas komplizierter für mich ;(
    Ich will die gesamte Datei nach dem anfangsbuchstaben "N" durchsuchen also wie im unteren Beispiel N100.000 und den Punkt und die drei nullen entfernen, also "N100"

    ich hoffe ihr könnt mir bei meinem Problem helfen :thumbsup:

    &%

    %

    (&%/000000)
    N100.000 G17 T1
    N110.000 G0 X-17.652 X3.475
    N120.000 G0 Z2.
    N130.000 G3 X3.345 Y34.543 I12.234 J3.345
    N140.000 G0 Z150.000
    N150.000 M30

    ?
    0000


    *Rot ist den Moderatoren vorbehalten, Schriftfarbe wurde geändert*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Was du brauchst ist Regex.Hier wird beschrieben wie es mit VB6 geht support.microsoft.com/kb/818802 .
    Jedoch empfehle ich dir falls möglich zu VB.Net zu wechseln da das .Net Framework viel mächtiger ist.
    ja das problam ist nur ich kann das Programmiersystem nicht so einfach wechseln!!! Weil ich vor zwei jahren mal für die Firma eine Software geschrieben habe und die bekommt auf wunsch dann immer eine kleine erweiterung ;) normalerweise arbeite ich mit vb 2008 aber leider kann ich mein Projekt das in vb5 erstellt wurde nicht so einfach exportieren....warum weis ich nicht aber er bringt mir dann immer Fehlermeldungen
    Hier ein Beispiel:
    Setzt voraus, das 'N' wie in deinem Beispiel, immer ganz links steht und der '.' an fünfter Stelle.

    Visual Basic-Quellcode

    1. DIM zeile$
    2. OPEN "maximus.txt" FOR INPUT AS #1
    3. OPEN "maximus-2.txt" FOR OUTPUT AS #2
    4. WHILE NOT EOF(1)
    5. LINE INPUT #1, zeile
    6. IF LEFT$(zeile,1) = "N" THEN
    7. zeile = LEFT$(zeile, 4) + MID$(zeile, 9)
    8. END IF
    9. PRINT #2, zeile
    10. WEND
    11. CLOSE



    @rykoJLL
    Was du brauchst ist Regex.

    Warum?
    ok die Lösung funktioniert :D
    Nur das Problem ist dass es auch mal vorkommen kann, dass ich z.B. N5011 stehen habe...und laut der Left§ anweiung würde er mir ja nur N501 ausgeben! Kann ich ihm nicht sagen such mir den ersten Punkt auf der linken seite und schreibe mir alle zeichen auf der linken seite im Wort wieder in die .txt datei
    und alle zeichen rechts vom punkt soll er löschen?


    Visual Basic-Quellcode

    1. zeile = LEFT$(zeile, 4) + MID$(zeile, 9)

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

    Weil ich vor zwei jahren mal für die Firma eine Software geschrieben habe

    Soll wohl ein Scherz sein …

    Mit einer kleinen Änderung funktioniert's:

    Visual Basic-Quellcode

    1. Dim zeile$, p%
    2. Open "maximus.txt" For Input As #1
    3. Open "maximus-2.txt" For Output As #2
    4. While Not Eof(1)
    5. Line Input #1, zeile
    6. If Left$(zeile,1) = "N" Then
    7. p = InStr(zeile, ".")
    8. zeile = Left$(zeile, p-1) + Mid$(zeile, p+4) ' // nur '.000' löschen
    9. 'zeile = Left$(zeile, p-1) ' // '.' und Rest der Zeile löschen
    10. End If
    11. Print #2, zeile
    12. Wend
    13. Close