Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Bit invertieren mit Checkbox? (https://www.delphipraxis.net/72453-bit-invertieren-mit-checkbox.html)

moelski 30. Jun 2006 12:01


Bit invertieren mit Checkbox?
 
Moin !

Ich habe da gerade ein kleines Problem, man könnte auch sagen eine Gehirnblockade, denn es gibt sicher ne ganz einfach Lösung für mein Prob ...

Also, ich progge da gerade an einem kleinen Tool um Mikrocontroller (Atmel) zu programmieren (Flash beschreiben). Nun muss ich dafür immer diverse Leitungen der seriellen Schnittstelle an-/abschalten.
Je nachdem wie man den Adapter dafür aufbaut, muss man die Port Pins aber invertieren. Und da komm ich nicht weiter oder sagen wir mal ich finde keine einfache Lösung.

Also, ich habe da eine Checkbox. Wenn die angehakt ist, dann soll eine Steuerleitung invertiert werden. Bsp:
Im Normalfall setzte ich z.B. RTS(0). Bedeutet die RTS Leitung ist auf logisch 0.
Nun setze ich den Haken. Wenn ich jetzt RTS(0) aufrufe wäre halt die Leitung logisch 1.

Das könnte man nun ja so lösen:
If checkbox.checked = True then RTS(1) else RTS(0)

Aber das ist mir zu aufwändig, denn man muss das ja an zig Stellen einbauen.
Gibt es nicht irgendwie sowas wie ... RTS(0 AND Checkbox.Checked) oder so in der Art? Also irgendeine Logikverknüpfung? Der Input der Procedure RTS ist übrigens Integer.

Hoffe jemand hat da einen Tip ...

Waldteufel 30. Jun 2006 12:05

Re: Bit invertieren mit Checkbox?
 
;-) not ;-) http://de.wikipedia.org/wiki/Einerkomplement ;-)

Sharky 30. Jun 2006 12:12

Re: Bit invertieren mit Checkbox?
 
Zitat:

Zitat von Waldteufel
;-) not ;-) ...

Aha,
und was ist 0 not 0 :?:

moelski 30. Jun 2006 12:16

Re: Bit invertieren mit Checkbox?
 
Moin !

Habs doch noch rausgefunden ...
Die Lösung ist XOR

RTS(0 XOR BoolToInt(Checkbox.checked))

TeronG 30. Jun 2006 12:16

Re: Bit invertieren mit Checkbox?
 
Bei einer SPS würde ich sowas wohl mit nem XOR machen ... so wird der Ausgang nur dann invertiert wenn der 2te Eingang high ist quasi n einschltbarer Inverter ^^

edit: misst :( n tick so langsam :mrgreen:

andreash 30. Jun 2006 12:19

Re: Bit invertieren mit Checkbox?
 
Ich würde eine Procedure SetRTS schreiben, die in Abhängigkeit des Zustands der Checkbox die Funktion RTS aufruft.

RTS(0 XOR BoolToInt(Checkbox.checked)) ist äquivalent zu RTS(BoolToInt(Checkbox.checked))


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz