If Instr(...) And Instr(...) Then Bug?
Übersicht

![]() |
EingeproggtBetreff: If Instr(...) And Instr(...) Then Bug? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
Ich bin gestern halb verzweifelt, weil eine If-Abfrage nicht funktionierte. Ich wollt euch schon fast fragen, aber das wäre mir zu peinlich gewesen. Deshalb hab ich das Problem in seine Einzelteil zerlegt, überprüft und bin dabei draufgekommen, dass mich der Computer sprichwörtlich verarscht. Schaut euch das an: Code: [AUSKLAPPEN] ;Dieser Code soll eine BB datei durchsuchen und ermitteln, ob eine bestimmte Funktion darin deklariert ist.
;Man wird in praktisch allen Fällen verarscht. ;Der Fehler ist genauso kklein wie fatal ;-) ;Existierende BB-Datei, darin vorkommende Funktion (oder Teil einer Funktion) (Name) SearchBBFile("knobel.bb","Search") WaitKey() End Function SearchBBFile(file$,suchen$) Local txt$,reader=ReadFile(file$) Local test1,test2 While Not Eof(reader) txt$=ReadLine(reader) test1=False test2=False If Instr(txt$,"Function") Then test1=True EndIf If Instr(Lower(txt$),Lower(suchen$)) Then test2=True EndIf If test1 And test2 Then Print "Ich hab dich verarscht" If Instr(txt$,"Function") And Instr(Lower(txt$),Lower(suchen$)) Then Print "Ich arbeite brav" EndIf Wend CloseFile reader End Function Dieser Code soll das "Phänomen" nur demonstrieren. Falls sich jemand nicht mit den Kommentaren auskennt: Der 1. Parameter gibt an, welche BB-Datei durchsucht werden soll (absoluter oder relativer Pfad, Datei muss existieren) Der 2. Parameter gibt an, nach welchem Funktionsnamen oder Teil eines Funktionsnamens gesucht werden soll. Der Fehler liegt darin, dass ich keinen Vergleichsoperator verwende, aber das tu ich nie. Einmal gehts und einmal nicht... Hat mich irgendwie sehr geärgert, aber ich habe das Problem ja entdeckt und gelöst. Wollte euch nur auf diese Eigenart hinweisen. mfG, Christoph. EDIT: Immer dasselbe. Nachdem ich hier poste, krieg ich nen Gedankenblitz... Also: Könnte es daran liegen, dass "And" auf binärer Ebene die Ergebnisse verarbeitet und dabei nunmal 0 herauskommen kann? Also zB 101 And 010 ist 000 |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
dein edit gedanke ist rischtisch! dazu hast du praktisch nur glück mit deinem if instr(...) weil instr die position angibtich bin bei solchen sachen immer vorsichtig und mach dann allerhöchstens If instr(xx,xx)<>0 damit ist man immer auf der sicheren seite. dann klappts auch mit den nachbarn! sprich: If instr(bla,blub)<>0 And instr(mu,hah)<>0... | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group