AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi 8 Bits zu CheckBoxen zuweisen - Ansatz gesucht

8 Bits zu CheckBoxen zuweisen - Ansatz gesucht

Ein Thema von Netblaster · begonnen am 11. Jun 2008 · letzter Beitrag vom 12. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2   
Netblaster

Registriert seit: 6. Jun 2008
Ort: Birkenwerder/Berlin
12 Beiträge
 
#1

8 Bits zu CheckBoxen zuweisen - Ansatz gesucht

  Alt 11. Jun 2008, 22:41
Hallo Allerseits,

ich stehe gerade bei einem logischen Problem etwas auf dem Schlauch.
Folgendes:
Ich lese einen µC aus und bekomme ein Byte zurück.(Also 8 Bit

Jedes Bit stellt einen Kontakt dar. (Also 8 Kontakte)
Für jeden Kontakt habe ich eine CheckBox, die anzeigen soll, welcher Kontakt gerade geschlossen ist.

Wie könnten am elegantesten die CheckBoxen gesetzt werden.
Also die blödeste Lösung wären 256 If-Abfragen. (undenkbar)

Kann mich mal jemand "anstoßen" ??

Danke - Andrej!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: 8 Bits zu CheckBoxen zuweisen - Ansatz gesucht

  Alt 11. Jun 2008, 22:43
Vielleicht hilft Dir dies ja auf die Sprünge.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Netblaster

Registriert seit: 6. Jun 2008
Ort: Birkenwerder/Berlin
12 Beiträge
 
#3

Re: 8 Bits zu CheckBoxen zuweisen - Ansatz gesucht

  Alt 11. Jun 2008, 22:55
Ja Danke erstmal,

das ich die einzelnen Bits auswerten muss ist schon klar.
Ich sags mal einfach: Also soll ich die jeweiligen 8 Stellen des Bytes seperieren und dann hätte ich nur noch 8 Abfragen...? (Also 8 mal testen ob 1 oder 0 und dann die jeweilige CheckBox setzen)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: 8 Bits zu CheckBoxen zuweisen - Ansatz gesucht

  Alt 11. Jun 2008, 22:55
Mit etwas Geschick könnte man das ja auch in eine Schleife packen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
bluesbear

Registriert seit: 14. Dez 2005
Ort: Hahnstätten
355 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: 8 Bits zu CheckBoxen zuweisen - Ansatz gesucht

  Alt 11. Jun 2008, 23:07
Ich weiß auch nicht, wo es grad hängt, aber ich werfe mal "and" und "shl" als Suchbegriffe für F1 dazu. Eine etwas genauere Frage wäre hilfreich.
Klaus M. Hoffmann
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: 8 Bits zu CheckBoxen zuweisen - Ansatz gesucht

  Alt 11. Jun 2008, 23:24
Eine nicht mathematische Lösung: Wandele das Byte in seine binäre Schreibweise als Zeichenkette um. Dann bekommst du zum Beispiel: "10110101". Dann gehst du die Zeichenkette in einer Schleife durch und prüfst wo eine eins steht:
if s[1] = '1then CheckBox1.Checked := True;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Thomas Horstmann

Registriert seit: 25. Apr 2007
86 Beiträge
 
Delphi 10.3 Rio
 
#7

Re: 8 Bits zu CheckBoxen zuweisen - Ansatz gesucht

  Alt 11. Jun 2008, 23:28
Hallo,

evtl. hilft diese Funktion weiter. "iValue" entspricht z.B. der Byte-Variable.
Und "iBit" legt das zu prüfende Bit fest (beginnend von rechts, wobei 0 dem ersten Bit enspricht).

"FloatToStr" bzw. "StrToInt" werden benutzt, weil "IntPower" Extended zurückgibt. Dies schien mir
der einfachste weg zu sein, um wieder auf Integer zu kommen. Deshalb auch zur Sicherheit
try/except. Gibt sicherlich elegantere Wege, aber läuft.

Viele Grüße
Tom

Delphi-Quellcode:
function CheckBit
( iValue : Integer ;
  iBit : Integer ) : Boolean ;
var
iString : String ;
iBitValue : Integer ;
begin
{ Variablen }
iString := FloatToStr(IntPower(2,iBit)) ;
  try
  iBitValue := StrToInt(iString) ;
  except
  iBitValue := 0 ;
  end ; // try
{ Prüfen und Rückgabe }
result := (iBitValue and iValue = iBitValue) ;
end ;
  Mit Zitat antworten Zitat
Netblaster

Registriert seit: 6. Jun 2008
Ort: Birkenwerder/Berlin
12 Beiträge
 
#8

Re: 8 Bits zu CheckBoxen zuweisen - Ansatz gesucht

  Alt 11. Jun 2008, 23:45
Vielen Dank Euch allen,

was ich mir nun gebaut habe:
Delphi-Quellcode:
var
Kontakte,z,z1 : byte;
DasEmpfangeneByte : string;

Begin
Kontakte:=ord(DasEmpfangeneByte); //Das empfangene Byte ist aus der Schnittstelle als String eingelesen
                              // und wird erst mal umgewandelt...spielt hier aber erst mal keine Rolle...

z1:=1;

for z:=1 to 8 do begin bit[z]:=Kontakte and z1; z1:=z1*2; end;

if bit[1] <> 0 then Hauptform.SeSkinCheckBox1.checked:=true;
if bit[2] <> 0 then Hauptform.SeSkinCheckBox2.checked:=true;
if bit[3] <> 0 then Hauptform.SeSkinCheckBox3.checked:=true;
if bit[4] <> 0 then Hauptform.SeSkinCheckBox4.checked:=true;
if bit[5] <> 0 then Hauptform.SeSkinCheckBox5.checked:=true;
if bit[6] <> 0 then Hauptform.SeSkinCheckBox6.checked:=true;
if bit[7] <> 0 then Hauptform.SeSkinCheckBox7.checked:=true;
if bit[8] <> 0 then Hauptform.SeSkinCheckBox8.checked:=true;

end
Also so geht es erst mal.
Ist ebend blöd, dass man die 8 CheckBoxen nicht mit einem Befehl gleichzeitig, sozusagen in dem man die BitMaske drüberlegt, aktivieren kann.

Aber Ihr habt mir erst mal erfolgreich weitergeholfen. - Danke!
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#9

Re: 8 Bits zu CheckBoxen zuweisen - Ansatz gesucht

  Alt 11. Jun 2008, 23:51
Wie wärs damit?
Delphi-Quellcode:
for z := 0 to 7 do
  TCheckBox(Hauptform.FindComponent('SeSkinCheckBox' + IntToStr(z+1))).Checked := ((bit shr z) and 1) <> 0;
  Mit Zitat antworten Zitat
Netblaster

Registriert seit: 6. Jun 2008
Ort: Birkenwerder/Berlin
12 Beiträge
 
#10

Re: 8 Bits zu CheckBoxen zuweisen - Ansatz gesucht

  Alt 12. Jun 2008, 00:08
Hey Dax,

das sieht ja sehr vielversprechend aus

Werde ich morgen mal austesten - was es so alles für Dinge in Delphi gibt !

(Komme leider viel zu wenig zum Delphicodern - aber was solls - viele Wege führen nach Rom - einige sind nur etwas steiniger )
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:00 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