Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Multikey = 0
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 566
Wohnort: Jüterbog

BeitragVerfasst am: 23.10.2008, 21:37    Titel: Antworten mit Zitat

Wobei ich meine das j nur ne Hilfsvariable ist und nicht interessiert....

NOT ist gut... und damn kurz was aber wenn zwischen 0 und 2 geswapt wird?
hilft dann noch NOT?

Bool .... man möge ihn vierteilen... aber leider ist er ja schon tot

1&1|1
1&0|0 AND?
0&1|0
0&0|0


*lol*
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 23.10.2008, 21:55    Titel: Antworten mit Zitat

NOT dreht einfach die bits um. da kannst du nur zwischen "an und aus" wechseln. und dabei nicht prüfen "IF a = 1", sondern einfahc "IF a" - liefert true, wenn's ungleich 0 ist.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 566
Wohnort: Jüterbog

BeitragVerfasst am: 23.10.2008, 22:45    Titel: Antworten mit Zitat

was ich nicht verstehe ist folgendes in zippos code:
"...THEN c = 1 AND j = 1"
was versucht wird ist klar...
Aber wieso meckert hier FB vom Syntax her nicht?
Wenns denn kein Fehler ist, was passiert da oben denn logisch hinter THEN?
Zwischen THEN und END IF sind die beiden Zuweisungen(c=1,j=1) in Ordnung, aber so?

Hab ich noch nie in einem BASIC Dialekt gesehen!
oder ist das gar zulässig?

Mutton
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 23.10.2008, 22:50    Titel: Antworten mit Zitat

Code:
THEN c = (1 AND j) = 1

völlig okay.

damit kann man wunderbare kurzschriebweisen festlegen, z.B.

Code:
buttongedrueckt = (gedrueckt = 1)

buttongedrueckt erhält den wert TRUE, wenn die bedingung in klammern (die sind der übersichthalber da) auch TRUE ist. im fall oben erhält c den wert TRUE, wenn 1 AND j die Zahl 1 ergibt.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 566
Wohnort: Jüterbog

BeitragVerfasst am: 23.10.2008, 23:08    Titel: Antworten mit Zitat

Sowas gab es bei good old AMIGABasic nicht.... grinsen
da wär nen Syntax Error gekommen

Ich glaub ich werd zu alt dafür neutral

genug gelernt für heute, hab Dank

Mutton
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 24.10.2008, 12:50    Titel: Antworten mit Zitat

das sollte es da genau so gegeben haben O_o
das sind einfachste sprachelemente, die ich bisher überall gefunden habe.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 24.10.2008, 14:56    Titel: Antworten mit Zitat

Zitat:
Code:
IF i = 1 AND j = 0 AND a = 0 THEN a = 1 AND j = 1
IF i = 1 AND j = 0 AND a = 1 THEN a = 0 AND j = 1


Meinst du nicht eher "THEN a = 1: j = 1"?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 24.10.2008, 18:16    Titel: Antworten mit Zitat

was meinste, worauf ich schon die ganze zeit hinaus will. Zunge rausstrecken
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sippo



Anmeldungsdatum: 17.04.2008
Beiträge: 125

BeitragVerfasst am: 25.10.2008, 12:15    Titel: Antworten mit Zitat

hab nun nen code gebaut, der zwar sehr lang ist, bei dem ich auch einige Möglichkeitn kenne ihn zu kürzen, aber er funktiniert^^. Natürlich könnte man z.b. die basisadresse noch in eine variable setzen und so com 1 und 2 ansteuern und den ganzen unteren teil könnte man in eine for next- schleife setzen...

Code:

dim shared as integer a(1 to 10)
screen 15
declare Sub ausfuehren

do
if multikey (&H10) then
    a(1) = 1
end if

if multikey (&H11) then
    a(2) = 1
end if

if multikey (&H12) then
    a(3) = 1
end if
   
if multikey (&H13) then
    a(4) = 1
end if

if multikey (&H14) then
    a(5) = 1
end if

if multikey (&H15) then
    a(6) = 1
end if

if multikey (&H16) then
    a(7) = 1
end if

if multikey (&H17) then
    a(8) = 1
end if





if multikey (&H1E) then
    a(1) = 0
end if

if multikey (&H1F) then
    a(2) = 0
end if

if multikey (&H20) then
    a(3) = 0
end if

if multikey (&H21) then
    a(4) = 0
end if

if multikey (&H22) then
    a(5) = 0
end if

if multikey (&H23) then
    a(6) = 0
end if

if multikey (&H24) then
    a(7) = 0
end if

if multikey (&H25) then
    a(8) = 0
end if

locate 1,1
print "1 ="; a(1)
locate 2,1
print "2 ="; a(2)
locate 3,1
print "3 ="; a(3)
locate 4,1
print "4 ="; a(4)
locate 5,1
print "5 ="; a(5)
locate 6,1
print "6 ="; a(6)
locate 7,1
print "7 ="; a(7)
locate 8,1
print "8 ="; a(8)

ausfuehren
loop until inkey = chr (27)

sub ausfuehren
    if a(8) = 1 then
        out (1019), 64
        out (1020), 1
        out (1020), 0
        out (1019), 0
    end if
    if a(8) = 0 then
        out (1019), 0
        out (1020), 1
        out (1020), 0
    end if
   
    if a(7) = 1 then
        out (1019), 64
        out (1020), 1
        out (1020), 0
        out (1019), 0
    end if
    if a(7) = 0 then
        out (1019), 0
        out (1020), 1
        out (1020), 0
    end if
   
    if a(6) = 1 then
        out (1019), 64
        out (1020), 1
        out (1020), 0
        out (1019), 0
    end if
    if a(6) = 0 then
        out (1019), 0
        out (1020), 1
        out (1020), 0
    end if
   
    if a(5) = 1 then
        out (1019), 64
        out (1020), 1
        out (1020), 0
        out (1019), 0
    end if
    if a(5) = 0 then
        out (1019), 0
        out (1020), 1
        out (1020), 0
    end if
   
    if a(4) = 1 then
        out (1019), 64
        out (1020), 1
        out (1020), 0
        out (1019), 0
    end if
    if a(4) = 0 then
        out (1019), 0
        out (1020), 1
        out (1020), 0
    end if
   
    if a(3) = 1 then
        out (1019), 64
        out (1020), 1
        out (1020), 0
        out (1019), 0
    end if
    if a(3) = 0 then
        out (1019), 0
        out (1020), 1
        out (1020), 0
    end if
   
    if a(2) = 1 then
        out (1019), 64
        out (1020), 1
        out (1020), 0
        out (1019), 0
    end if
    if a(2) = 0 then
        out (1019), 0
        out (1020), 1
        out (1020), 0
    end if
   
    if a(1) = 1 then
        out (1019), 64
        out (1020), 1
        out (1020), 0
        out (1019), 0
    end if
    if a(1) = 0 then
        out (1019), 0
        out (1020), 1
        out (1020), 0
    end if
    out (1020), 2
    out (1020), 0
end sub


edit:
ich glaub das oben beschriebene mach ich nun einfach mal immerhin is der code für einen so kurzen nutzen recht lang. und das mit not sollte ich auch nochmal probieren, bei mir hat der immer zwischen 0 und -1 gewechselt. lag das an meim dateityp?? und welcher war der dateity der nur true und false kennt???? (bit wär ja logisch xD aber mal ernst wie belege ich nur 1 bit die dateitypen in der tabelle fangen ja erst mit byte an)

edit2:
noch ne frage: wie kann ich mehrere teile eines arrays gleichzeitig ansprechen? z.b wenn array(1) und array(2) den gleichen wert bekommen sollen?

und für die, die es interresiert hier mein neuer code (mit genau 100 zeilen also 92 weniger als der alte und komfortablerer steuerung)

Code:

dim shared as integer a(8),c
screen 13
declare sub ausfuehren
do
    if multikey (&H02) then
        if a(1) = 1 then
            a(1) = 0
            else a(1) = 1
        end if
    end if
   
    if multikey (&H03) then
        if a(2) = 1 then
            a(2) = 0
            else a(2) = 1
        end if
    end if
   
    if multikey (&H04) then
        if a(3) = 1 then
            a(3) = 0
            else a(3) = 1
        end if
    end if
   
    if multikey (&H05) then
        if a(4) = 1 then
            a(4) = 0
            else a(4) = 1
        end if
    end if
   
    if multikey (&H06) then
        if a(5) = 1 then
            a(5) = 0
            else a(5) = 1
        end if
    end if
   
    if multikey (&H07) then
        if a(6) = 1 then
            a(6) = 0
            else a(6) = 1
        end if
    end if
   
    if multikey (&H08) then
        if a(7) = 1 then
            a(7) = 0
            else a(7) = 1
        end if
    end if
   
    if multikey (&H09) then
        if a(8) = 1 then
            a(8) = 0
            else a(8) = 1
        end if
    end if
   
    do
    loop until multikey (&H02) = 0
    do
    loop until multikey (&H03) = 0
    do
    loop until multikey (&H04) = 0
    do
    loop until multikey (&H05) = 0
    do
    loop until multikey (&H06) = 0
    do
    loop until multikey (&H07) = 0
    do
    loop until multikey (&H08) = 0
    do
    loop until multikey (&H09) = 0
    for c = 1 to 8
        locate c,1
        print "Ausgang";c;"=";a(c)
    next
    ausfuehren
loop until inkey = chr (27)

sub ausfuehren
    for c = 8 to 1
    if a(c) = 1 then
        out (1019), 64
        out (1020), 1
        out (1020), 0
        out (1019), 0
    end if
    if a(8) = 0 then
        out (1019), 0
        out (1020), 1
        out (1020), 0
    end if
    out (1020), 2
    out (1020), 0
    next
end sub


der nutzen des codes ist die ansteuerung des com ports hinter dem sich ein schieberegister befindet, welches 8 ausgänge ansteuert.
wer genaueres wissen will:

http://www.skilltronics.de/versuch/elektronik_pc/4094.html
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 27.10.2008, 16:12    Titel: Antworten mit Zitat

Zitat:
und den ganzen unteren teil könnte man in eine for next- schleife setzen...

und den oberen zum großen Teil auch. zwinkern

Zitat:
und das mit not sollte ich auch nochmal probieren, bei mir hat der immer zwischen 0 und -1 gewechselt. lag das an meim dateityp?? und welcher war der dateity der nur true und false kennt????

Das mit dem Wechsel von 0 und -1 ist korrekt; wenn du speziell einen Wechsel zwischen 0 und 1 haben wolltest, geht 1-a (oder für einen Wechsel zwischen 4 und 8 kann man 12-a nehmen ... wenn man so was will ...)
Einen Datentyp für true und false gibt es unter FreeBASIC nicht (außer spezielle Bitfelder in UDTs, die hier nichts bringen). Der kleinste Datentyp ist ein BYTE.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz