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

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

Eingeproggt

Betreff: If Instr(...) And Instr(...) Then Bug?

BeitragDo, Nov 29, 2007 14:35
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Nov 29, 2007 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
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...

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group