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 :mrgreen:

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 :lol:

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

Code: Alles auswählen

type blabla.txt |find "xyz" > xyz.txt

Verfasst: 21.12.2005 13:16
von Kiffi
stbi hat geschrieben:

Code: Alles auswählen

type blabla.txt |find "xyz" > xyz.txt
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?