Datei durchsuchen
Übersicht

pilo11Betreff: Datei durchsuchen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich möchte eine Textdatei komplett durchsuchen nach bestimmten Wörtern. Ich habe es mit Instr und Readline, Readbytes und allem möglichen probiert, aber ich konnte immer nur eine Zeile durchsuchen. Dann habe ich es mit While not eof und wend probiert um immer wieder eine Zeile weiter zu prüfen, aber da sagt er nur Illegal Memory Adress Code: [AUSKLAPPEN] .label
AppTitle "Poke(t)Script to XSE 0.1" ;Bildschirm löschen Cls ; Einführung Print "Bitte wähle eine Textdatei aus." Print "Sie muss txt sein." Print "Falls sie rbc ist, bitte um-" Print "wandeln. Bitte Pfad angeben." Print "Beispiel: c:\Script.txt" Print "MIT txt Endung!" ;Datei laden Datei$ = Input("Datei: ") Dat$ = ReadFile(Datei$) A=ReadLine(Dat$) ;Strings überprüfen ;Anfangsscript While Not Eof(A) B$=ReadLine$(Dat$) If Instr(B$,"#org $start", 1) Then Goto label1 Wend End .labelf1 Print "" Print "Fehler! Anfangsscript konnte" Print "in Zeile 1,2 und 3 nicht" Print "gefunden werden!" Delay 7000 Goto label End CloseFile (Dat) End .label1 Dat2=WriteFile(".\XSE.txt") WriteLine(Dat2, "#org @main") End |
||
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Dat$ = ReadFile(Datei$)
A=ReadLine(Dat$) ;Strings überprüfen ;Anfangsscript While Not Eof(A) Hier ist ein bisschen was schief gelaufen. Wenn du an das Ende einer Variable ein $ schreibst, ist es eine Stringvariable. Wenn du eine Datei öffnest, speicherst du allerdings den Rückgabewert von ReadFile ![]() ReadLine ![]() Eof ![]() ![]() Code: [AUSKLAPPEN] Dat = ReadFile(Datei$)
A$=ReadLine(Dat) ;Strings überprüfen ;Anfangsscript While Not Eof(Dat) PS: verwende nicht Goto. Verwende lieber Function ![]() mfg Thunder |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
pilo11 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielen Dank!
Und ein schönes neues Jahr noch ![]() |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier noch einen Tipp zu Deinem Projekt
Du kannst nicht schon während des Durchscannens der Datei entscheiden, ob in den ersten drei Zeilen das Anfangsscript gefunden wurde: Mach es besser so: Geh mit ReadLine durch das Dokument. Prüfe die aktuelle Zeile, ob der SuchString enthalten ist und setze wenn ja ein Flag, z.B. "Gefunden%=1" Dann schließe die Datei und frage erst anschließend, ob Gefunden=0 ist. Das heißt, der String war nicht vorhanden Zu Funktionen emfehle ich Dir mein Funktions-Tutorial: https://www.blitzforum.de/foru...highlight= |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Man kann schon und vor allem auch sauber Schleifen vorzeitig verlassen, nur macht man das nicht mit Goto, sondern mit Exit![]() Eim komplettes Durchlaufen benötigt vor allem bei größeren Dateien unnötig Recourcen. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
pilo11 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielen Dank für die ganzen zusätzlichen Infos.
Ich habe noch eine kleine Frage, kann man auch die Anzahl der Zeilen zwischen zwei Wörtern zählen, ich hatte mal was mit Len gelesen, aber das war was mit Anzahl der Buchstaben... |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Beschreib das mal genauer....
Interessiert Dich die Anzahl der Zeilen zwischen der Zeile mit ersten Wort und der Zeile mit dem 2.Wort? Oder willst Du ab dem gesuchten Wort den Rest dieser Zeile noch mitzählen? Oder willst Du den genauen Abstand in Buchstaben zwischen den beiden Wörter finden, auch wenn dazwischen mehrere Zeilen lagen. |
||
pilo11 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So mein ich das:
Bla - interessant Blabla - uninteressant dingsda - uninteressant dingsdadada - interessant In der neu erstellten Datei soll es so aussehen: Bla leerzeile leerzeile Bla |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
jetzt ist mir gar nix mehr klar?
Was hat das jetzt mit "Zählen" zu tun? Sprichst du jetzt vom Verändern der Datei oder Erstellen einer neuen aus der alten? Hast du den Code wie Thunder wollte schon umgeformt und Funktionen daraus gemacht. Kannst du eine aktuelle Version davon hier reinstellen? |
||
pilo11 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nein ich wollte einen TextUmwandler schreiben.
Also Wenn er in dem Text bei Zeile 3 bla findet, dann soll er in einer neuen Datei in Zeile 3 blabla schreiben z.B. message zu msgbox (Programmiersprachenumwandler) |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
logo, alles klar....
aus einer Datei A.TXT wird eine Datei B.TXT und dort wird Zeile für Zeile ein Text eingelesen und in eine neue Sprache umgewandelt. Also wäre die Vorgabe so: Datei A öffen Datei B öffnen Repeat Zeile lesen ZeileWandeln ZeileSchreiben Until beiden Dateien zu. sieht nach 3 Funktionen aus. Aber zählen mußt Du da doch gar nix, oder? wenn dir eine Zeile aus A.TXT unnötig erscheint, dann schreibst Du in B.TXT einfach eine WriteLine mit Leerstring "" Mach mal 3 Funktionen daraus und poste das. |
||
- Zuletzt bearbeitet von Midimaster am Fr, Jan 01, 2010 19:20, insgesamt einmal bearbeitet
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
statt ''Bla'' fragst du '' Bla '' ab.
Und Upper ![]() ![]() |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
pilo11 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es soll ein Programm werden, wleches alle Texte umwandelt, also so
#org $start message $text, 1 std 6 manche schreiben es aber so oder fügen was hinzu: #org $start applymovement 1 $go pause 30 message $text, 1 std 6 |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du bist wirklich ein Meister in erklären... Hmmmm...
Also generell würde ich für deine Zwecke Makroprogrammierung mit Beispielsweise Excel vorschlagen. Denn da wirst du auch noch eine variable Eingabeoberfläche haben, wo du deine Werte ständig aktualisieren kannst und darüber hinaus biszu 64000 Zeilen (Suchwerte) eingeben kannst. Geht einfach und funktioniert perfekt. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
naja, das lässt sich doch alle machen mit dem Modell, das ich dir beschrieben habe.
Du musst halt die Logik schreiben, was für jede mögliche Zeile passieren soll. Wieviele unterschiedliche Befehle gibt es denn etwa? 10? 100? 1000? |
||
pilo11 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es ist eine kleine Programmiersprache etwa 100 | ||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
so, nun antworte mal nicht immer gleich nach 15 Sekunden sondern erstell erst mal diese Funktionen und sende dann den Code hierher. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group