Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Frontrush.de
Anmeldungsdatum: 10.05.2006 Beiträge: 7
|
Verfasst am: 10.05.2006, 20:37 Titel: Alle Zeilen mit dem Wort "Test" kopieren. |
|
|
Hi,
ich hab mal wieder ne Frage an die Coder von euch. Ist es möglich mit einem Qbasic Programm ale Zeilen aus eine vorher bestimmten Textdatei (beispielsweise test.txt) alle Zeilen in denen ein bestimmtes Wort steht (z.B: Test) in eine Datei (beispielsweise test2.txt) zu kopieren??
Wenn ja, wie?
Wäre sehr nett wenn jemand mal schnell nen Beispielcode schreiben könnte, bin nämlich ziemlicher Amateur.
Danke |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 10.05.2006, 20:43 Titel: |
|
|
Hallo.
Code: | INPUT "Quelldatei: ", q$
INPUT "Zieldatei: ", z$
INPUT "Suchbegriff: ", s$
c&=0
OPEN q$ FOR INPUT AS #1
OPEN z$ FOR OUTPUT AS #2
DO UNTIL EOF(1)
LINE INPUT #1, zeile$
IF INSTR(UCASE$(zeile$), UCASE$(s$)) THEN
PRINT #2, zeile$
c&=c&+1
END IF
IF EOF(1) THEN EXIT DO
LOOP
CLOSE #1, #2
PRINT "Vorgang abgeschlossen, es wurden "; LTRIM$(STR$(c&)); " entsprechende Zeilen gefunden."
SLEEP: END |
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
Frontrush.de
Anmeldungsdatum: 10.05.2006 Beiträge: 7
|
Verfasst am: 10.05.2006, 20:56 Titel: |
|
|
Vielen vielen vielen Dank für die hammerschenlle Antowort. Danke |
|
Nach oben |
|
 |
Frontrush.de
Anmeldungsdatum: 10.05.2006 Beiträge: 7
|
Verfasst am: 10.05.2006, 21:08 Titel: |
|
|
Ok, dass hat jetzt auch alles gut geklappt, jetzt kommt aber dass, was ich nich mal Ansatz weise hingekriegt habe. 1. ICh möchte wie bisher nach Wort 1 suchen und dessen Zeile in eine textdatei kopieren, 2. möchte ich jedoch zusätzlich jede 3. zeile nach wort 2 in diese textdatei kopieren. WIE?
Ich verlass mich jetzt auf euch nachdem ich grad so schnell hilfe bekommen hab
Code: |
INPUT "Quelldatei: ", q$
INPUT "Zieldatei: ", z$
INPUT "Suchbegriff 3.zeile: ", s$
INPUT "Suchbegriff 2", j$
c& = 0
OPEN q$ FOR INPUT AS #1
OPEN z$ FOR OUTPUT AS #2
DO UNTIL EOF(1)
LINE INPUT #1, zeile$
IF INSTR(UCASE$(zeile$), UCASE$(s$)) THEN
PRINT #2, zeile$
c& = c& + 1
END IF
IF EOF(1) THEN EXIT DO
LOOP
CLOSE #1, #2
OPEN q$ FOR INPUT AS #1
OPEN z$ FOR OUTPUT AS #2
c& = 0
DO UNTIL EOF(1)
LINE INPUT #1, zeile$
IF INSTR(UCASE$(zeile$), UCASE$(j$)) THEN
c& = c& + 2
PRINT #2, zeile$
c& = c& + 1
END IF
IF EOF(1) THEN EXIT DO
LOOP
CLOSE #1, #2
PRINT "Vorgang abgeschlossen, es wurden "; LTRIM$(STR$(c&)); " entsprechende Zeilen gefunden."
SLEEP: END
|
Könnte das gehen?
Er schreibt mir immer nur ein wort raus.
Zuletzt bearbeitet von Frontrush.de am 10.05.2006, 21:37, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 10.05.2006, 21:36 Titel: |
|
|
Dein Code kann so nicht richtig funktionieren, ich kapier aber um ehrlich zu sein jetzt auch nicht ganz, was du gerne mit der Datei anstellen willst. Kannst du vielleicht mal eine Beispieldatei mit ein paar entsprechenden Daten posten und zeigen wie das Resultat nach der Filterung aussehen soll?
Übrigens: Doppelposts bitte vermeiden, für nachträgliche Ergänzungen kann man die eigenen Posts editieren.  _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
Frontrush.de
Anmeldungsdatum: 10.05.2006 Beiträge: 7
|
Verfasst am: 10.05.2006, 21:46 Titel: |
|
|
Beispieldatei hallo.txt: Code: | test 12343 blabdbl
dsfas
asfas
test
333333
beispiel 2222
dsdsd
beispiel 234234
test
34
34324 |
Ergebnis:
Code: |
333333
beispiel 2222
beispiel 234234
34324 |
ICh habs mal so versucht:
Code: | INPUT "Quelldatei: ", q$
INPUT "Zieldatei: ", z$
INPUT "Suchbegriff: ", s$
INPUT "Suchbegriff2: ", sz$
c&=0
OPEN q$ FOR INPUT AS #1
OPEN z$ FOR OUTPUT AS #2
DO UNTIL EOF(1)
LINE INPUT #1, zeile$
IF INSTR(UCASE$(zeile$), UCASE$(s$)) THEN
PRINT #2, zeile$
IF INSTR(UCASE$(zeile$), UCASE$(s$)) THEN
c&=c&+2
LINE INPUT #1, zeile$
PRINT #2, zeile$
c&=c&+1
END IF
IF EOF(1) THEN EXIT DO
LOOP
CLOSE #1, #2
PRINT "Vorgang abgeschlossen, es wurden "; LTRIM$(STR$(c&)); " entsprechende Zeilen gefunden."
SLEEP: END |
Jedohc krieg ich dann immer wen ich exe erstellen will die Meldung Loop ohne DO, was ich nich begreifen will. |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 10.05.2006, 22:06 Titel: |
|
|
Wie wär's hiermit:
Code: | DIM Suchbegriff(1 TO 3) AS STRING
Suchbegriff(1)="Apfel"
Suchbegriff(2)="Birne"
Suchbegriff(3)="Kirsche"
c&=0
INPUT "Quelldatei: ", q$
INPUT "Zieldatei: ", z$
OPEN q$ FOR INPUT AS #1
OPEN z$ FOR OUTPUT AS #2
DO UNTIL EOF(1)
LINE INPUT #1, zeile$
FOR i%=LBOUND(Suchbegriff) TO UBOUND(Suchbegriff)
IF INSTR(UCASE$(zeile$), UCASE$(Suchbegriff(i%))) THEN
PRINT #2, zeile$
c&=c&+1
EXIT FOR
END IF
NEXT i%
IF EOF(1) THEN EXIT DO
LOOP
CLOSE #1,#2
PRINT "Fertig, "; LTRIM$(STR$(c&)); " Eintraege gefunden."
SLEEP: END |
_________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 11.05.2006, 08:38 Titel: |
|
|
DOS bietet übrigens bereits einen Befehl dafür: "find" Und unter Linux ist es bekanntlich der "grep"-Befehl. Falls also das Ganze nur als Standalone-Programm für einen Einzelfall benötigt wird, hätte man sich den Programmieraufwand sparen können... _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
Frontrush.de
Anmeldungsdatum: 10.05.2006 Beiträge: 7
|
Verfasst am: 11.05.2006, 15:50 Titel: |
|
|
Ich glaub ihr habt mich nich richtig verstanden. Es ist so ich möchte immer die ÜBERNÄCHSTE ZEILE nach dem 2. Wort, in meinem Beispiel Test kopieren!
Habt ihr mein Problem jetzt verstanden??? |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 11.05.2006, 17:18 Titel: |
|
|
Hallo.
Ich wiederhole mal: Du möchtest, dass Zeilen mit dem ersten Suchbegriff ganz normal wie das Programm das bis jetzt macht rausgeschrieben werden. Zusätzlich gibt es die Angabe eines zweiten Suchbegriffs. Zeilen mit diesem sollen rausgeschrieben werden sowie die jeweils übernächste Zeile. Einen dritten Suchbegriff gibt es nicht. Alles richtig? Wenn ja, dann schreib ich dir den Code oben noch mal um.
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
Frontrush.de
Anmeldungsdatum: 10.05.2006 Beiträge: 7
|
Verfasst am: 12.05.2006, 07:02 Titel: |
|
|
Juhuu, er hats verstanden bis darauf, das beim 2. Suchbegriff nur die übernächste und icht die Zeile selbst in der der Suchbegriff steht kopiert werden soll.
Er hats verstanden, juhuu |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 12.05.2006, 10:25 Titel: |
|
|
Code: | DIM sw(1 TO 2) AS STRING
sw(1)="ErstesWort"
sw(2)="ZweitesWort"
INPUT "Quelldatei: ", q$
INPUT "Zieldatei: ", z$
OPEN q$ FOR INPUT AS #1
OPEN z$ FOR OUTPUT AS #2
DO UNTIL EOF(1)
LINE INPUT #1, zeile$
IF INSTR(UCASE$(zeile$),UCASE$(sw(1))) THEN
PRINT #2, zeile$
END IF
IF INSTR(UCASE$(zeile$,UCASE$(sw(2))) THEN
LINE INPUT #1, temp$ '<-Naechte Zeile, die wollen wir nicht
LINE INPUT #1, aha$ '<- Die Uebernaechste!
PRINT #2, aha$
END IF
IF EOF(1) THEN EXIT DO
LOOP
CLOSE #1, #2
PRINT "Fertig!": SLEEP: END |
_________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
Frontrush.de
Anmeldungsdatum: 10.05.2006 Beiträge: 7
|
Verfasst am: 12.05.2006, 14:04 Titel: |
|
|
Ok, jetzt klappts endlich
Großes Dankeschön an Sebastian |
|
Nach oben |
|
 |
|