Autor
|
Thema: Textdatei Zeilen löschen (2864 mal gelesen)
|
Beemer328 Mitglied Konstrukteurin Dipl.Ing.(FH)
Beiträge: 104 Registriert: 22.10.2008
|
erstellt am: 26. Mrz. 2015 14:54 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich möchte in einer Textdatei Zeilen mit bestimmtem Inhalt löschen und einzelne Einträge ersetzen. Das Ersetzen habe ich schon. Nun soll z.B. eine Zeile, die mit xyz beginnt, gelöscht werden. Kann jemand meinen Code ergänzen? Ich kenne mich leider gar nicht aus. Das habe ich bisher im Internet gefunden und für meine Zwecke umgebastelt: Set objFSO = CreateObject("Scripting.FileSystemObject") Const ForReading = 1 Const ForWriting = 2 ' Datei öffnen und Text einlesen und schließen Set objFile = objFSO.OpenTextFile("prog_1", ForReading) strText = objFile.ReadAll objFile.Close ' Änderungen am Inhalt strNewText = Replace(strText, "A", "M10 o6.1") strNewText = Replace(strNewText, "S70", "") strNewText = Replace(strNewText, "M6", "") strNewText = Replace(strNewText, "M3", "") strNewText = Replace(strNewText, "M8", "")
' Neue Datei erstellen mit neuen Inhalten füllen set resultFile = objFSO.CreateTextFile("Name.knc", true) resultFile.WriteLine strNewText resultFile.Close
Vielen Dank im Voraus. ------------------ Grüße Julia [Diese Nachricht wurde von Beemer328 am 26. Mrz. 2015 editiert.] [Diese Nachricht wurde von Beemer328 am 26. Mrz. 2015 editiert.] [Diese Nachricht wurde von Beemer328 am 26. Mrz. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...
Beiträge: 2657 Registriert: 06.11.2000 SolidWorks Start 1999 ** CSWP 01/2008 ** Dell Precision 7540 mobile Workstation, 64GB, Quadro RTX 3000; SWX2020 SP5; SAP/PLM+ECTR; DriveWorks Pro; Programmierung: VBA, aktuell Visual Studio 2017/VB.Net
|
erstellt am: 26. Mrz. 2015 16:44 <-- editieren / zitieren --> Unities abgeben: Nur für Beemer328
Hall Julia, Quick'n'Dirty und sicher verbesserungswürdig: Bei Zugriff auf Dateinamen solltest du dir angewöhnen, immer den kompletten Pfad einzubauen. Wenn du alles in einem Verzeichnis machst, kannst du dafür eine Konstante definieren. Dann ist das auch einfach zu pflegen, falls sich der Verzeichnisname mal ändert. Code: Option ExplicitDim objFSO, objFile, resultfile Dim strText As String Dim strNewText As String Const ForReading = 1 Const ForWriting = 2 Dim Zeilen As Variant Dim Zeile As String Dim n As Integer Const WorkDir = "c:\temp\" Sub main() Set objFSO = CreateObject("Scripting.FileSystemObject") ' Datei öffnen und Text einlesen und schließen Set objFile = objFSO.OpenTextFile(WorkDir & "test.txt", ForReading) strText = objFile.ReadAll objFile.Close ' Änderungen am Inhalt strNewText = Replace(strText, "A", "M10 o6.1") strNewText = Replace(strNewText, "S70", "") strNewText = Replace(strNewText, "M6", "") strNewText = Replace(strNewText, "M3", "") strNewText = Replace(strNewText, "M8", "") 'Kompletten String in einzel-Strings umwandeln. 'Jeder Teil-String entspricht einer Zeile Zeilen = Split(strNewText, vbNewLine) strNewText = "" 'leer machen, wird neu befüllt 'Jede Zeile prüfen, ob sie den "bösen" Teilstring enthält: For n = 0 To UBound(Zeilen) If InStr(Zeilen(n), "xyz") <> 1 Then 'wenn "xyz" an erste Stelle steht, ist das Suchergebnis = 1 'nichts gefunden, also zum Gesamtstring hinzufügen und Zeilenschaltung anhängen strNewText = strNewText & Zeilen(n) & vbNewLine End If Next ' Neue Datei erstellen mit neuen Inhalten füllen Set resultfile = objFSO.CreateTextFile(WorkDir & "test_result.txt", True) resultfile.write strNewText resultfile.Close
End Sub
------------------ Klaus www.al-ko.com | mein Gästebuch Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beemer328 Mitglied Konstrukteurin Dipl.Ing.(FH)
Beiträge: 104 Registriert: 22.10.2008
|
erstellt am: 27. Mrz. 2015 10:17 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank erstmal. Funktioniert! Wie kann ich das für mehrere Werte/Zeilen erweitern? Es müssen immer die Zeilen mit den Anfängen G99, G90 und G17 weg. ------------------ Grüße Julia
[Diese Nachricht wurde von Beemer328 am 27. Mrz. 2015 editiert.] [Diese Nachricht wurde von Beemer328 am 27. Mrz. 2015 editiert.] [Diese Nachricht wurde von Beemer328 am 27. Mrz. 2015 editiert.] [Diese Nachricht wurde von Beemer328 am 27. Mrz. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beemer328 Mitglied Konstrukteurin Dipl.Ing.(FH)
Beiträge: 104 Registriert: 22.10.2008 Intel XEON E3-1280 32GB Ram, Quadro P4000 Win 10 64bit Catia V5R24 Solidworks 2018
|
erstellt am: 27. Mrz. 2015 11:40 <-- editieren / zitieren --> Unities abgeben:
Habs hingekriegt! Hab einfach den unteren Teil ein paar Mal kopiert und andere Werte eingesetzt. Ist bestimmt furchtbar "dirty", aber es geht. Dankeschön!! ------------------ Grüße Julia [Diese Nachricht wurde von Beemer328 am 27. Mrz. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| CNC-Fräser / Zerspanungsmechaniker (m/w/d) | Die invenio-Gruppe ist mit 525 Mitarbeiterinnen und Mitarbeitern an elf Standorten in Deutschland ein Entwicklungsspezialist für die Bauteil- und Systementwicklung ? vom Konzept bis zur Umsetzung in Prototypen und Kleinserien. Bei invenio wird Fertigung großgeschrieben! Unser expandierender Fertigungsbereich zeichnet sich insbesondere durch seine Vielseitigkeit aus. Wir entwickeln und fertigen ... | Anzeige ansehen | Projektmanagement |
|
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...
Beiträge: 2657 Registriert: 06.11.2000
|
erstellt am: 30. Mrz. 2015 08:14 <-- editieren / zitieren --> Unities abgeben: Nur für Beemer328
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|