| 
          
          
          
          
           manfredkraft 
          Anzündhilfe 
          
          
          Registriert seit: Jul 2005 
          Wohnort:  
          Verein:  
          Beiträge: 45 
          Status: Offline 
         | 
        
          
           
          
           
          
            Hallo, ich muss doch nochmals nachfragen.
  Ich habe nachfolg. Beispiel aus der Bascom Doku modifiziert und  der Compiler (V 1.11.8.3) meldet weiterhin Fehler. Kann mal bitte das Beisp. auf seinem Bascom - Compiler testen und mir das Ergebnis mitteilen?
  Danke mfg manfred -------------------------------------------------------------------------------------- Const B1 = 1 Dim A as Byte
  If A = 1 Then   If B1 Then      Print "B1=1"   End If Else   Print "A is not 0" End If
  ' ergibt: '--------------------------------------------------------------------------------------------------- 'Error : 35    Line :   5     3 parameters expected  , in File : E:\PROGRAMME\BASCOM-AVR\TEST_IF.BAS 'Error : 28    Line :   10    IF THEN expected  , in File : E:\PROGRAMME\BASCOM-AVR\TEST_IF.BAS
  'obwohl nach der 'Bascom Dokumentation zulässig:  '===================== 'Action 'Allows conditional execution or branching, based on the evaluation of a Boolean expression.
  'Syntax ' ====== 'IF expression THEN ' {ELSEIF expression THEN}  ' {ELSE}  'END IF '--------------------------------------------------- 'Remarks 'Expression  'Any expression that evaluates to true or false.
   'Definition EXPRESSION:  'Expressions and Operators
  'An expression can  be a numeric constant , a variable , 'or a single value obtained by combining constants, 'variables, and other expressions with operators 
            
           
          
          
          
         | 
      
      
      
        | 
          
          
          
          
           AlexanderM 
          Epoxy-Meister 
          
          
          Registriert seit: Feb 2004 
          Wohnort: Düsseldorf 
          Verein: FAR 
          Beiträge: 238 
          Status: Offline 
         | 
        
          
           
          
           
          
            Hallo manfredkraft, momentan habe ich leider keine Zeit, es auszuprobieren. Allerdings fällt mir folgendes auf: Const B1 = 1 Dim A as Byte If A = 1 Then If  B1  Then ... Wenn Ausdrücke wie "If B1 Then" verwendet werden, dann sollte die Variable als Boolean definiert sein. Manche Compiler schlucken zwar auch, wenn es sich um einen anderen (oder nicht definierten) Typen handelt, aber um auf Nummer sicher zu gehen, ist es besser, entweder eine explizite Bedingung zu schreiben (also z.B.:  If B1 = 1 Then) oder die Variable als Boolean zu definieren und entsprechend auch zuzuweisen ( B1 = true)  Nur so mein 2-Cent-Vorschlag dazu    Mit besten Grüssen, Alexander
            
            
          
          
          
         | 
      
      
      
        | 
          
          
          
          
           manfredkraft 
          Anzündhilfe 
          
          
          Registriert seit: Jul 2005 
          Wohnort:  
          Verein:  
          Beiträge: 45 
          Status: Offline 
         | 
        
          
           
          
           
          
            Hallo AlexanderM,
  Const B1 = &B1 Dim A as Boolean A = 1
  If A = 1 Then   If B1 Then Print "B1=1" Else   Print "A is 0" End If
  ergibt
  Error : 35    Line :   9     3 parameters expected  , in File : E:\PROGRAMME\BASCOM-AVR\TEST_IF.BAS Error : 28    Line :   14    IF THEN expected  , in File : E:\PROGRAMME\BASCOM-AVR\TEST_IF.BAS
  Anyway, thanks! manfred
            
           
          
          
          
         | 
      
      
      
        | 
          
          
          
          
           Gelöscht2 
          Epoxy-Meister 
          
          
          Registriert seit: Aug 2005 
          Wohnort:  
          Verein:  
          Beiträge: 213 
          Status: Offline 
         | 
        
          
           
          
           
          
            *gelöscht gem. BDSG*
            
           
          
          
          
         | 
      
      
      
        | 
          
          
          
          
           manfredkraft 
          Anzündhilfe 
          
          
          Registriert seit: Jul 2005 
          Wohnort:  
          Verein:  
          Beiträge: 45 
          Status: Offline 
         | 
        
          
           
          
           
          
            HAllo Mathias,
  habe die versch. Varianten durchprobiert, lt. Bascom - Doku muss die Auswertung des Ausdrucks ein True/False ergeben. Eine konstante "1" tut dies allemal. Definiert man die Schalter als Variablen geht's, aber nicht als Konstanten (z.B. const component_availlable = 1)
  Verschachtelte If's sollten bei Bascom eigentlich gehen.
  Ansonsten wundere ich über die "nicht eindeutigen" Fehler-Meldungen, die Bascom - Doku der Free-Version könnte etwas präziser sein.
  manfred 
            
           
          
          
          
         | 
      
      
      
        | 
          
          
          
          
           Gelöscht2 
          Epoxy-Meister 
          
          
          Registriert seit: Aug 2005 
          Wohnort:  
          Verein:  
          Beiträge: 213 
          Status: Offline 
         | 
        
          
           
          
           
          
            *gelöscht gem. BDSG*
            
           
          
          
          
         | 
      
      
      
        | 
          
          
          
          
           AlexanderM 
          Epoxy-Meister 
          
          
          Registriert seit: Feb 2004 
          Wohnort: Düsseldorf 
          Verein: FAR 
          Beiträge: 238 
          Status: Offline 
         | 
        
          
           
          
           
          
            Hi, nun habe ich mir mal die Zeit genommen, es im BASCOM (Version 1.11.7.9) auszuprobieren (Zeit hat man ja nicht, die muß man sich erst nehmen    ) Folgendes geht, d.h. der Compiler meckert nicht: '------------------------------------------------ Dim A as  BitDim B as  BitA = 1 B = 0 If A = 1 Then    If B = 1 Then       Print "B ist 1"    End If Else    Print "A ist 0" End If End '------------------------------------------------ Folgendes mosert der Compiler aber an: '------------------------------------------------ Dim B as  BooleanB =  True              'Fehlermeldung "Store Bit error..."If B Then                       'Fehlermeldung "3 parameters expected"   Print "B ist falsch"       'Fehlermeldung "If Then expected", d.h. Folgefehler aus dem vorherigenEnd If End '------------------------------------------------ Es scheint also zu sein, daß BASCOM den Variablentyp  Bool gar nicht kennt (taucht in der Hilfe auch nirgendwo auf). Folglich kann man ihn auch nicht definieren. Stattdessen gibt's nur  Bit, das ja auch nur ein Bit im Arbeitsspeicher belegt. Und um das Bit abzufragen, muß man leider die Formulierung "If A=1 Then" in voller Länge und Schönheit verwenden    Mit verschachtelten If-Abfragen scheint er aber problemlos zurecht zu kommen    Bliebe zu eruieren, wieweit die Schachteltiefe gehen darf, aber das ist ein anderes Kapitel.     Basic ist nun mal keine so elegante Programmiersprache und der BASCOM scheint (zumindest in der freien Version) auch noch nicht soo ausgereift zu sein, zumindest die Hilfe.  Also ist oft ein bißchen Experimentieren angesagt. Das macht aber das Leben dann doch auch so interessant, nicht wahr?    In diesem Sinne  alles Gute und nicht den Enthusiasmus verlieren.    CU, Alexander
            
            
          
          
          
         | 
      
      
      
        | 
          
          
          
          
           manfredkraft 
          Anzündhilfe 
          
          
          Registriert seit: Jul 2005 
          Wohnort:  
          Verein:  
          Beiträge: 45 
          Status: Offline 
         | 
        
          
           
          
           
          
            Hallo !
  ausführlicher Programmcode ist schon wünschenswert. Mein Punkt war jedoch die Behandlung von Zuständen, die während der jeweiligen Anwendung  konstant sind wie z.B. der Jumber BR7, der derzeit LCD_BL ansteuert. Diesen Jumber wollte ich, da konstant, als Konstante definieren und im Programm verwenden. Mein Ziel ist, über eine derartige Konstanten-Liste die für die Anwendung eingestellte  Konfiguration o h n e Speicherverbrauch zu realisieren. In diesem Fall muß die Anweisung - If LCD_BL_AVAIL then "do something" lauten.
  mfg manfred 
            
           
          
          
          
         | 
      
      
      
        | 
          
          
          
          
           Stefan Wimmer 
          Grand Master of Rocketry 
           Moderator 
          
            
          
          Registriert seit: Aug 2000 
          Wohnort: Berlin 
          Verein: Deutsche Experimental Raketen Arbeitsgruppe (DERA) 
          Beiträge: 2398 
          Status: Offline 
         | 
        
          
           
          
           
          
            ..was wäre denn so schlimm daran zu schreiben "if IrgendeineHarwareAvailable = true then..."? Dann wäre es sowohl syntaktisch richtig als auch les- und auf einen Blick erfassbar.
            
           
          
          
          
            
          It's the Government - it doesn't have to make sense!  (B. Kaplow in r.m.r)
          
          
          
         | 
      
      
      
        | 
          
          
          
          
           manfredkraft 
          Anzündhilfe 
          
          
          Registriert seit: Jul 2005 
          Wohnort:  
          Verein:  
          Beiträge: 45 
          Status: Offline 
         | 
        
          
           
          
           
          
            HAllo Stefan,
  leider kenne ich keine Lösung eine mit const BR7=1 definierte Konstante in Bascom mit  If BR7 = true zu verwenden, der Compiler übersetzt das schlicht nicht in Code!
  Const B1 = &B1 Dim A as Bit A = 1
  'If A = 1 Then          'auch mit "true" getestet   If B1 = 1 Then Print "B1=1"
  ergibt: Error : 31    Line :   9     Invalid datatype  , in File : E:\PROGRAMME\BASCOM-AVR\TEST_IF.BAS Error : 28    Line :   9     IF THEN expected  , in File : E:\PROGRAMME\BASCOM-AVR\TEST_IF.BAS
  Bedingte Übersetzung mit #if ... ist ok!
  mfg manfred
            
           
          
          
          
         | 
      
      
      
			| 
				
				
				
				
				
			 |