(Noob)String in Txt datei suchen funzt nicht wies soll.
Übersicht

chaos81Betreff: (Noob)String in Txt datei suchen funzt nicht wies soll. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich bin dabei mich in Blitzbasic einzuarbeiten. Ich habe damit angefangen mir die funktionsweise der befehle anzusehn. Dabei wollte ich aus einer text datei mit 3 zeilen unterschiedlich langem text ein bestimmtes wort auslesen (später werden danach noch 2 zusatz stellen ausgelsen) ich wollte das ganze über eine function machen die mir das wort (+ 2 stellen) zurückgibt. soweit so gut mein code funzt soweit aber leider immer nur wenn das wort in der ersten zeile vorkommt, hier mal der code: Code: [AUSKLAPPEN] ; Soll einen String suchen diesen wiederausgeben mit 2 zusätzlichen zeichen. ; Variablen Global wor$ wor$ = input("Welches Wort?:") getstring("C:\test.txt",wor$) ;Hauptfunktion zum suchen eines strings Function getstring(datei$,word$) ; print (datei$ + wor$) filein = Openfile (datei$) repeat txt$ = readline (filein) wordl$ = len(word$) ;lönge des Wortes pos$ = instr(txt$,wor$,1) ;stelle des Wortes ergeb$ = Mid(txt$,pos$,wordl$) ;das Wort mit den zusatzstellen auslesen print (ergeb$) until ergeb$ = wor$ Closefile (filein) Return end Function so nun mal angenommen das wort steht inder 2. zeile dann sollte ich doch mit ner schleife die anweisungen so lange durchlaufen lassen bis wor$ = ergeb$ ... nur wie !?Bekomm immer nen Runtime Error: parameter must be greather than 0 markiert ist dabei ergeb$ = Mid(txt$,pos$,wordl$) Das mit den 2 zeichen zusätzlich würde ich wieder mit +2 bei wordl$ = len(word$) machen und halt am ende vor until mit -2 wieder abziehn... blöd erklärt ... Ich habe mich früher am Amiga mal in Qbasic und Arexx versucht und kam damit gut klar. Nun hoffe ich das mir hier jemand auf die sprünge helfen kann. mfg |
||
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erstmal eine kleiner korrigierter Code, den ich allerdings jetzt und hier aus der Hüfte zog, ihn also nicht testete.
Code: [AUSKLAPPEN] Function GetString (datei$, word$)
filein = OpenFile (datei$) wordl = Len(word$) ; brauchst du ja nur einmal zu berechnen ; Außerdem gibt Len ein Integer zurück While Not Eof(filein) ; durchforste die ganze datei, bis zum ende txt$ = ReadLine(filein) ; Komplette Zeile auslesen pos% = Instr(txt$,word$,1) ; Zum einen gibt Instr ein Integer zurück ; zum anderen hattest du die Variable falsch eingetragen If pos% > 0 ; Vorher prüfen ob Instr überhaupt was zurück gibt ergeb$ = Mid(txt$,pos%,wordl); hier wieder zwei mal Integer anstatt String Print (ergeb) EndIf Wend CloseFile (filein) ;wenn du eh nichts zurückgeben willst brauchst du auch kein Return ;) End Function Die Repeat - Until Schleife flog raus, weil sie beendet wurde, sobald ergeb$ gleich dem word$, also sobald das Wort das erste mal gefunden wurde. Ich lege dir dringen ans Herz, dich auch über die Rückgabevariablen zu informieren. Nicht jeder Befehl von BB gibt einen String zurück. Wie gesagt, ich habe das nicht getestet. Außerdem: ~VERSCHOBEN~ Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde. Wie du schon sagtest, Noobfrage. Also Beginner... cheers |
||
chaos81 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke für die hilfe.
jetzt geht es. wollte eigentlich das die funktion den string von ergeb$ zurückliefert... ein einfaches return wird da nicht reichen. Hab jetzt ergeb$ als globale variable... damit gehts auch. mfg p.s. ja stimmt lernen muß ich nochviel aber der code waren meine ersten zeilen in BB ![]() |
||
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das kann man doch immernoch zurück geben lassen...
Code: [AUSKLAPPEN] Function GetString$ (datei$, word$) ;hier noch den Rückgabetyp definieren
Denn BB gibt immer Integer bei Funktionen zurück, wenn du es nicht definierst. Code: [AUSKLAPPEN] ;...
If pos% > 0 ergeb$ = Mid(txt$,pos%,wordl) ;hier die Print Anweisung entfernen EndIf Die flackert sonst später wild auf deinem Screen rum ![]() Code: [AUSKLAPPEN] ;...
Return ergeb$ End Function Damit auch was zurück gegeben wird. et voila |
||
chaos81 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ist ja eine schnelle hilfestellung hier. habe das zwischenzeitlich hinbekommen mit der rückgabe... ja das ich das print in der Func entfernen mußte das war mir als 1. klar ![]() Habe mir das ganze inzwischen so erweitert das die func o.k ist . danke für deine hilfe... werde bestimmt nochmal drauf zurückkommen ![]() mfg |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group