Terminator85 Geschrieben 15. Dezember 2003 Teilen Geschrieben 15. Dezember 2003 Hallo, das auslesen einer textdatei funktioniert jetzt aber wenn ich nach einem backslash suchen möchte und es durch ein anderes zeichen ersetzen möchte, geht es nicht. (vielleicht weil das backslash ein sonderzeichen ist) wie müsste den der suchbefehl nach dem Backslash lauten ??? ---> "\" das tut nicht!!!!! Wie müsste denn das Suchkriterium nach einem Backslash lauten [in VB] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gast Geschrieben 15. Dezember 2003 Teilen Geschrieben 15. Dezember 2003 Hast Du schon mal versucht nach dem ASCII-Code zu suchen? Habe gerade keine ASCII-Tabelle zur Hand. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
EvilNick Geschrieben 15. Dezember 2003 Teilen Geschrieben 15. Dezember 2003 Müßte mit Chr$(92) gehen... 92 entspricht dem "\" Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Terminator85 Geschrieben 16. Dezember 2003 Autor Teilen Geschrieben 16. Dezember 2003 Also ich hab das mit der 92 getestet aber das tut nicht egal wie ich es eingegeben hab zum beispiel so: '************************************************ 'Text wird aus scanview.txt ausgelesen 'und die Zeichen ausgetauscht 'das Ergebnis wird in scanview2.txt dargestellt '************************************************ Option Explicit ' Definiere E/A-Modus-Konstante Const ForWriting = 2 ' E/A-Modus: schreiben Const inF = "scanview.txt" Const outF = "scanview2.txt" ' Zeichenmuster zum Suchen und Ersetzen Const pattern = "Chr$(92)" <----- DAS TUT LEIDER NICHT Const replacement = "\\" Dim Text Dim fso Dim oFileIn, oFileOut ' Text-Stream Dim path, filein, fileout WIE MUSS DER BEFEHL RICHTIG LAUTEN ? Danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
developer Geschrieben 16. Dezember 2003 Teilen Geschrieben 16. Dezember 2003 Original geschrieben von Terminator85 ' Zeichenmuster zum Suchen und Ersetzen Const pattern = "Chr$(92)" <----- DAS TUT LEIDER NICHT Const pattern = Chr(92) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Terminator85 Geschrieben 16. Dezember 2003 Autor Teilen Geschrieben 16. Dezember 2003 Danke für die Hilfe aber so recht tut das leider noch nicht deshalb poste ich hiermal den kompleten Quelltext: Ich möchte eine Datei auslesen und zwar die scanview.txt und alle Backslash durch zwei Backslash's ersetzen Also aus C:\Windows C:\\Windows machen '************************************************ 'Text wird aus scanview.txt ausgelesen 'und die Zeichen ausgetauscht 'das Ergebnis wird in scanview2.txt dargestellt '************************************************ Option Explicit ' Definiere E/A-Modus-Konstante Const ForWriting = 2 ' E/A-Modus: schreiben Const inF = "scanview.txt" Const outF = "scanview2.txt" ' Zeichenmuster zum Suchen und Ersetzen Const pattern = "????" <-- was muss hier rein ?(suche) Const replacement = "???" <-- was muss hier rein (ersetze) Dim Text Dim fso Dim oFileIn, oFileOut ' Text-Stream Dim path, filein, fileout path = GetPath() ' Hole Pfad fileIn = path & inF ' Dateinamen ableiten fileOut = path & outF ' FileSystemObject-Objekt erzeugen Set fso = CreateObject("Scripting.FileSystemObject") If Not fso.FileExists(fileIn) Then ' Datei vorhanden? WScript.Echo "Datei '" & fileIn & "' nicht gefunden" WScript.Quit 1 End if ' Öffnet Eingabedatei und Ausgabedatei Set oFileIn = fso.OpenTextFile(fileIn) ' Eingabedatei Set oFileOut = fso.OpenTextFile(fileOut, _ ForWriting, true) ' Ausgabedatei Do While Not (oFileIn.atEndOfStream) Text = oFileIn.Readline ' Lese Zeile Text = Filter (Text, pattern, replacement) oFileOut.WriteLine (Text) ' Schreibe Text Loop WScript.Echo "Textdatei: " & fileIn & vbCRLF & _ "Ergebnis in: " & fileOut '########################## Function GetPath ' Hole Skriptpfad DIM path path = WScript.ScriptFullName ' Skriptname GetPath = Left(path, InstrRev(path, "\")) End Function Function Filter (txt, expr1, expr2) ' Ersetze expr1 mit expr2 in txt Dim oReg Set oReg = New RegExp ' Regular expression. oReg.Global = true ' Alle Treffer oReg.IgnoreCase = True ' Gross-/Kleinschreibung beachten. ' Ersetze alle expr1 mit expr2 oReg.Pattern = expr1 ' Muster setzen Filter = oReg.Replace(txt, expr2) End Function ' Ende Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
EvilNick Geschrieben 16. Dezember 2003 Teilen Geschrieben 16. Dezember 2003 Const pattern = "????" <-- was muss hier rein ?(suche) Const replacement = "???" <-- was muss hier rein (ersetze) Const pattern = Chr$(92) Const replacement = Chr$(92) & Chr$(92) Kann auch sein das du das $ weglassen musst. GetPath = Left(path, InstrRev(path, "\")) Hier würde ich auch mal "\" ersetzen... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Terminator85 Geschrieben 16. Dezember 2003 Autor Teilen Geschrieben 16. Dezember 2003 @ EvilNick Tut leider nicht irgendwie verflixt ?!? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
EvilNick Geschrieben 16. Dezember 2003 Teilen Geschrieben 16. Dezember 2003 Original geschrieben von Terminator85 @ EvilNick Tut leider nicht irgendwie verflixt ?!? Dann bin ich mit meiner Weisheit auch erstmal am Ende... da das ganze auch wie ein VBS Skript aussieht kann ich es hier nicht testen, da ich kein Scripting habe (Sicherheit). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
EvilNick Geschrieben 16. Dezember 2003 Teilen Geschrieben 16. Dezember 2003 So, also das erste Problem macht Const ... = Chr(92). Das macht VBA zumindest nicht (konnte es jetzt gerade nur im VBA von Excel testen). Ich habe das ganze jetzt auf die schnelle in VBA mal programmiert, hier meine Lösung, die funktioniert in VBA! Sub test() Set fso = CreateObject("Scripting.FileSystemObject") fileIn = "D:\test.txt" Set oFileIn = fso.OpenTextFile(fileIn) Do While Not oFileIn.atendofstream txt = oFileIn.Readline MsgBox Filter(txt) Loop End Sub Function Filter(txt) As String Filter = Replace(txt, "\", "\\", 1, -1, vbTextCompare) End Function Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Terminator85 Geschrieben 16. Dezember 2003 Autor Teilen Geschrieben 16. Dezember 2003 Also ich werde das mal gleich testen vielen DANK !!! Aber ich schreibe grad ein *.vbs also ein visual basic script ich weiß nicht ob das einen Unterschied macht ?!? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
EvilNick Geschrieben 16. Dezember 2003 Teilen Geschrieben 16. Dezember 2003 Original geschrieben von Terminator85 Also ich werde das mal gleich testen vielen DANK !!! Aber ich schreibe grad ein *.vbs also ein visual basic script ich weiß nicht ob das einen Unterschied macht ?!? Ich denke mal nicht, da es eine Art von VB ist (wie VBA auch). Eigentlich habe ich ja nur in deiner Function "Filter" das ganze gegen eine einzige Funktion ausgetauscht. Und die Funktion sollte VBS auch kennen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Terminator85 Geschrieben 16. Dezember 2003 Autor Teilen Geschrieben 16. Dezember 2003 Ok ich hab das mal versucht einzubauen aber es funzt nicht. Das Problem ist das ich noch nie was davor mit VB gemacht habe und nur ein paar habe. Das was ich vorher an Quelltext hatte hab ich auch nur aus nem buch abgetippt. So einigermaßen find ich mich schon zu recht aber deine erkenntnisse in meinen quelltext einzubinden - das schaffe ich net..... Vielleicht kanns du mir das noch mal für "dummies" posten Was ich nun jetzt genau verändern muss ?!? Danke :e@sy Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
EvilNick Geschrieben 16. Dezember 2003 Teilen Geschrieben 16. Dezember 2003 Option Explicit ' Definiere E/A-Modus-Konstante Const ForWriting = 2 ' E/A-Modus: schreiben Const inF = "scanview.txt" Const outF = "scanview2.txt" ' Zeichenmuster zum Suchen und Ersetzen Dim txt Dim fso Dim oFileIn, oFileOut ' Text-Stream Dim path, filein, fileout path = GetPath() ' Hole Pfad fileIn = path & inF ' Dateinamen ableiten fileOut = path & outF ' FileSystemObject-Objekt erzeugen Set fso = CreateObject("Scripting.FileSystemObject") If Not fso.FileExists(fileIn) Then ' Datei vorhanden? WScript.Echo "Datei '" & fileIn & "' nicht gefunden" WScript.Quit 1 End if ' Öffnet Eingabedatei und Ausgabedatei Set oFileIn = fso.OpenTextFile(fileIn) ' Eingabedatei Set oFileOut = fso.OpenTextFile(fileOut, _ ForWriting, true) ' Ausgabedatei Do While Not (oFileIn.atEndOfStream) txt = oFileIn.Readline ' Lese Zeile txt = Filter (txt) oFileOut.WriteLine (txt) ' Schreibe Text Loop WScript.Echo "Textdatei: " & fileIn & vbCRLF & _ "Ergebnis in: " & fileOut '########################## Function GetPath() As String ' Hole Skriptpfad DIM path path = WScript.ScriptFullName ' Skriptname GetPath = Left(path, InstrRev(path, "\")) End Function Function Filter() As String Filter = Replace(txt, "\", "\\", 1, -1, vbTextCompare) End Function ' Ende Das ist nur eine Vermutung von mir. Da ich bisher nichts mit VBS gemacht habe kann ich nur raten. Du mußt halt nachschauen, ob die Replace() Funktion von VBA mit der aus VBS identisch ist. Ansonsten poste nochmal, wo genau ein Fehler auftritt... oder vielleicht findet sich ja doch noch jemand der sich mit VBS auskennt und hier helfen kann und nicht so munter "Wer wird Millionär" spielt wie ich gerade Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Terminator85 Geschrieben 16. Dezember 2003 Autor Teilen Geschrieben 16. Dezember 2003 Danke es tut jatzt :marine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.