Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Alle Zeilen mit dem Wort "Test" kopieren.

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Frontrush.de



Anmeldungsdatum: 10.05.2006
Beiträge: 7

BeitragVerfasst am: 10.05.2006, 20:37    Titel: Alle Zeilen mit dem Wort "Test" kopieren. Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 10.05.2006, 20:43    Titel: Antworten mit Zitat

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

lächeln

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Frontrush.de



Anmeldungsdatum: 10.05.2006
Beiträge: 7

BeitragVerfasst am: 10.05.2006, 20:56    Titel: Antworten mit Zitat

Vielen vielen vielen Dank für die hammerschenlle Antowort. Danke
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Frontrush.de



Anmeldungsdatum: 10.05.2006
Beiträge: 7

BeitragVerfasst am: 10.05.2006, 21:08    Titel: Antworten mit Zitat

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 grinsen


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?happy

Er schreibt mir immer nur ein wort raus.


Zuletzt bearbeitet von Frontrush.de am 10.05.2006, 21:37, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 10.05.2006, 21:36    Titel: Antworten mit Zitat

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. lächeln 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. zwinkern
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Frontrush.de



Anmeldungsdatum: 10.05.2006
Beiträge: 7

BeitragVerfasst am: 10.05.2006, 21:46    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 10.05.2006, 22:06    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 11.05.2006, 08:38    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Frontrush.de



Anmeldungsdatum: 10.05.2006
Beiträge: 7

BeitragVerfasst am: 11.05.2006, 15:50    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 11.05.2006, 17:18    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Frontrush.de



Anmeldungsdatum: 10.05.2006
Beiträge: 7

BeitragVerfasst am: 12.05.2006, 07:02    Titel: Antworten mit Zitat

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.
grinsen Er hats verstanden, juhuu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 12.05.2006, 10:25    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Frontrush.de



Anmeldungsdatum: 10.05.2006
Beiträge: 7

BeitragVerfasst am: 12.05.2006, 14:04    Titel: Antworten mit Zitat

Ok, jetzt klappts endlich grinsen
Großes Dankeschön an Sebastian
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz