Seite 1 von 2
Teile aus TXT File kopieren ==> kleine Frage noch!
Verfasst: 20.12.2005 23:15
von Zero_Cool
Hallo Zusammen
Leider bin ich noch nicht ein erfahrener User im Umgang mit Pure Basic, habe daher eine kleine Frage und hoffe das Ihr mir helfen könnt.
Ich würde gerne eine Kommandozeilenerweiterung schreiben, mit der es möglich ist gewisse Inhalte eines TXT Files zu kopieren und in ein weiteres TXT einzufügen. Soll heissen, ein TXT File beinhaltet in mehreren Zeilen das Wort "xyz", mein Programm sollte nun alle Zeilen erkennen in denen "xyz" steht, und diese Zeite in ein weiteres TXT File kopieren. Ist dies schwer machbar? Dank und Gruss Phil
Re: Kommandozeilen - Automatisch Teile aus TXT File kopieren
Verfasst: 20.12.2005 23:27
von Kiffi
> Ist dies schwer machbar?
nöh, ist relativ einfach. Nachfolgender Code sollte das bewerkstelligen
können (ungeprüft):
Code: Alles auswählen
QuellDatei$ = "c:\blabla.txt"
ZielDatei$ = "c:\blublu.txt"
GesuchteZeichenfolge$ = "xyz"
FF_Quelle = ReadFile(#PB_Any,QuellDatei$)
If FF_Quelle
FF_Ziel = CreateFile(#PB_Any,ZielDatei$)
If FF_Ziel
While Eof(FF_Quelle) = 0
GeleseneZeile$=ReadString()
If FindString(GeleseneZeile$, GesuchteZeichenfolge$, 1)
UseFile(FF_Ziel)
WriteStringN(GeleseneZeile$)
UseFile(FF_Quelle)
EndIf
Wend
CloseFile(FF_Ziel)
Else
; Ausgabe: Zieldatei konnte nicht erstellt werden
EndIf
CloseFile(FF_Quelle)
Else
; Ausgabe: Quelldatei konnte nicht geöffnet werden
EndIf
Grüße ... Kiffi
Verfasst: 20.12.2005 23:33
von ts-soft
Peter Du bist zu schnell
geprüft, fast dasselbe
Code: Alles auswählen
File1 = ReadFile(#PB_Any, "xyz.txt")
If File1
File2 = CreateFile(#PB_Any, "abc.txt")
If File2
While Eof(File1) = #False
UseFile(File1)
Text$ = ReadString()
If FindString(Text$, "xyz", 1)
UseFile(File2)
WriteStringN(Text$)
EndIf
Wend
CloseFile(File1)
CloseFile(File2)
EndIf
EndIf
Verfasst: 20.12.2005 23:38
von Zero_Cool
Danke für die schnelle Hilfe. Habe das Programm kopiert, die txt Dateien erstellt, und eine exe kompiliert. In der Blabla.txt habe ich mehrere Zeilen mit "xyz" eingefügt, wenn ich jedoch das Programm laufen lasse, passiert in der zweiten Datei nicht's. Das Programm beendet sich auch nicht. Was ich was vergessen zu beachten?
EDIT: Habe nix gesagt, war ein kleiner Fehler meinerseits! Wow, das ging sehr schnell! Vielen Dank für die Hilfe! Funktioniert wunderbar?
Eine kleine Frage noch, kann ich irgendwie definieren das er nur gewisse Teile der Zeile Kopiert. Zum Beispiel, soll er alle Zeilen mit xyz kopieren, die Zeichen xyz im zweiten Dokument jedoch weg lassen?
Verfasst: 20.12.2005 23:46
von ts-soft
>> Was ich was vergessen zu beachten?
Glaskugel kaputt
Hab den Source getestet, und xyz wurde in Zeile 9 gefunden

Verfasst: 20.12.2005 23:49
von Kiffi
> Zum Beispiel, soll er alle Zeilen mit xyz kopieren, die Zeichen xyz im
> zweiten Dokument jedoch weg lassen?
ja, dafür gibt's ReplaceString() oder aber Mid().
Code: Alles auswählen
myString$="abcdef"
myString$=ReplaceString(myString$, "abc", "")
Debug myString$
oder
Code: Alles auswählen
myString$="abcdef"
myString$= Mid(myString$, 4, Len(myString$)-3)
Debug myString$
alles weitere zu diesen Befehlen in der Hilfe.
Grüße ... Kiffi
Verfasst: 20.12.2005 23:56
von Zero_Cool
Wunderbar! Danke! Ihr habt mir beide super geholfen! Danke! Jetzt klappts wunderbar! Schöner Abend!
Verfasst: 21.12.2005 09:33
von stbi
Verfasst: 21.12.2005 13:16
von Kiffi
danke für den Hinweis. Wusste ich noch nicht, dass das auch so funktioniert.
Aber ich denke, dass diese Funktionalität nur ein Teil dessen ist, was
Zero_Cool letztendlich machen möchte.
Grüße ... Kiffi
Verfasst: 22.12.2005 00:20
von Zero_Cool
Ich versuche Seit 2 Stunden folgenden Code abzuändern.
File1 = ReadFile(#PB_Any, "xyz.txt")
If File1
File2 = CreateFile(#PB_Any, "abc.txt")
If File2
While Eof(File1) = #False
UseFile(File1)
Text$ = ReadString()
If FindString(Text$, "xyz", 1)
UseFile(File2)
WriteStringN(Text$)
EndIf
Wend
CloseFile(File1)
CloseFile(File2)
EndIf
EndIf
Wie kann ich den Code so abändern, das genau das umgekehrte passiert? Alle Zeilen die das Wort "XYZ" NICHT beinhalten werden in die neue Datei geschrieben?
Könnte mir jemand einen kleinen Tipp geben?