procedure TBitFolge.fromByte( b : byte );
var
i : byte;
begin
for i := 8 downto 1 do
begin
if ( b mod 2 = 0 ) then
setBit( i, Null )
else
setBit( i, Eins );
b := b div 2;
end;
end;
procedure TBitFolge.fromChar( c : char );
begin
fromByte( ord(c) );
end;
function TBitFolge.toByte : byte;
var
i, wertigkeit, b : byte;
begin
b := 0;
wertigkeit := 128;
for i := 1 to 8 do
begin
if ( getBit(i) = Eins ) then
b := b + wertigkeit;
// sonst b := b + 0*wertigkeit = b
wertigkeit := wertigkeit div 2;
end;
RESULT := b;
end;
function TBitFolge.toChar : char;
begin
RESULT := chr( toByte );
end;
|
procedure TGUI.UpdateView;
begin
eBitFolge.Text := myBits.toString;
eByte.Text := inttostr( myBits.toByte );
eChar.Text := myBits.toChar;
end;
procedure TGUI.OneBitFolgeExit(Sender: TObject);
begin
myBits.fromString(eBitFolge.Text);
UpdateView;
end;
procedure TGUI.OneByteExit(Sender: TObject);
begin
myBits.fromByte( strtoint(eByte.Text) );
UpdateView;
end;
procedure TGUI.OneCharExit(Sender: TObject);
begin
if ( eChar.Text <> '' ) then
begin
myBits.fromChar( eChar.Text[1] );
UpdateView;
end;
end;
|