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

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

chaos81

Betreff: (Noob)String in Txt datei suchen funzt nicht wies soll.

BeitragSo, Jan 21, 2007 1:31
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Jan 21, 2007 10:37
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Jan 21, 2007 13:34
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Embarassed

d-bug

BeitragSo, Jan 21, 2007 14:06
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Smile


Code: [AUSKLAPPEN]
;...
        Return ergeb$
End Function

Damit auch was zurück gegeben wird.

et voila
 

chaos81

BeitragSo, Jan 21, 2007 16:57
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Very Happy

Habe mir das ganze inzwischen so erweitert das die func o.k ist .

danke für deine hilfe... werde bestimmt nochmal drauf zurückkommen Wink


mfg

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group