Sette flere checkboxer fra en integer

Litt om variabler og binære tall

En integer (eller en hvilken som helst annen datatype) er jo ikke annet en enn streng av 1ere og 0er. Jeg bruker dem som true / false verdier for å sette checked-verdien på checkbokser. Hvis vi ser på en 8-bits (unsigned) integer, kan den brukes til å sette 8 checkboxer. Noen programmeringsspråk har funksjoner for å "plukke ut" bitene fra en integer, jeg har nikke funnet det i Delphi, men det er ikke vanskelig å gjøre manuelt, vi må bare vite hva bitene står for:

BitVerdi når 1
02^0 = 1
12^1 = 2
22^2 = 4
32^3 = 8
42^4 = 16
52^5 = 32
62^6 = 64
72^7 = 128

Når vi vet hvilke bit som er satt, er det bare å legge sammen verdien for dem, fx: 00100101, teller fra høyre og får at bit 0,2 og 5 er satt, binært 00100101 blir med andre ord 1+4+32 = 37.

Det er litt vanskeligere å regne ut den andre veien. En måte å gjøre det på, er å begynne med tallet for den høyeste biten, i dette tilfellet 128. Dersom tallet som skal kodes binært er mindre enn det (128), er biten ikke satt, og vi går videre med neste tall nedover. Dersom det er større, er biten satt, vi trekker fra tallet vi skjekket mot (128) fra tallet som skal kodes og forsetter videre nedover

Eksempel på binærkoding

Hva blir 71 i binært?
Tallet er < 128, så bit 7 er ikke satt, vi fortsetter med 64. 71 > 64, så bit 6 er satt og vi trekker 64 fra 71 og får 7, Så ser vi at 7 < 32, 7 < 16 og 7 < 8, så bit 5,4 og 3 er ikke satt. 7 > 4, så bit 2 er satt, 7-4 = 3 og 3 > 2, så bit 1 er satt, tilslutt, 3-2 = 1 og 1=1, så bit 0 er satt
71 binært blir 01000111

Anvendt i Delphi

I CBTest.zip har jeg laget et lite program som demonstrerer dette.

Programvindu Skriv inn en verdi i ruten oppe til venstre, trykk [Sett] og den vises i checkboxene. Sett noen av checkboxene og trykk [Les] og verdien fra checkboxene vises ved siden av [Les]-knappen.

Kontakt meg på webmaster@sickel.net for kommentarer eller spørsmål om dette programmet

Opp igjen
Hovedside


Valid XHTML 1.1! Valid CSS! Viewable With Any Browser Created with xemacs Created by Morten Sickel
activated using php
Webhotelltjenester fra Subsys
Layoutgrunnlag fra Bluerobot
IE css problems partly solved using IE7
Last updated 12.01.05