AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte der zahl-in-bits-umwandler
Thema durchsuchen
Ansicht
Themen-Optionen

der zahl-in-bits-umwandler

Ein Thema von dajuhsa · begonnen am 8. Mai 2007 · letzter Beitrag vom 18. Mai 2007
Antwort Antwort
Benutzerbild von dajuhsa
dajuhsa
Registriert seit: 20. Apr 2007
hi, ich hab hier mal ein kleines programm geschrieben um kleine und mittlere Zahlen in Zahlen der Zweierreihe, also in bits umzuwandeln. z.B. 13 zu 1101.
Sobald einer irgendeinen nutzwert feststellt soll er es mir bitte sagen

Delphi-Quellcode:
procedure TForm2.MaxBestimmen(Zahl:integer);
begin
 if Zahl<2 then begin max := 1;anz:=1 end
 else
 if Zahl<4 then begin max := 2;anz:=2 end
 else
 if Zahl<8 then begin max := 4;anz:=3 end
 else
 if Zahl<16 then begin max := 8;anz:=4 end
 else
 if Zahl<32 then begin max := 16;anz:=5 end
 else
 if Zahl<64 then begin max := 32;anz:=6 end
 else
 if Zahl<128 then begin max := 64;anz:=7 end
 else
 if Zahl<256 then begin max := 128;anz:=8 end
 else
 if Zahl<512 then begin max := 256;anz:=9 end
 else
 if Zahl<1024 then begin max := 512;anz:=10 end
 else
 if Zahl<2048 then begin max := 1024;anz:=11 end
 else
 if Zahl<4096 then begin max := 2048;anz:=12 end
 else
 if Zahl<8192 then begin max := 4096;anz:=13 end
 else
 if Zahl<16384 then begin max := 8192;anz:=14 end
 else
 if Zahl<32768 then begin max := 16384;anz:=15 end
 else
 if Zahl<65536 then begin max := 32768;anz:=16 end
 else
 if Zahl<131072 then begin max := 65536;anz:=17 end
 else showmessage('die Zahl ' + inttostr(Zahl) + ' ist zu hoch, geben sie eine Zahl zwischen 1 und 131071 ein')
end;

procedure TForm2.Button1Click(Sender: TObject);var j:integer;
begin
FormCreate(Sender);
MaxBestimmen(StrToInt(Edit1.Text));
Wert := StrToInt(Edit1.Text);
BitsBestimmen;
for j:= 1 to 17 do begin
 if j = 1 then Edit1.Text := '';
 Edit1.Text := Edit1.Text + Bit[j]
end;
end;

procedure TForm2.BitsBestimmen; var i: integer;
begin
 for i := 1 to anz do begin
  if wert>=max then begin Bit[i] := '1';dec(wert,max) end
  else Bit[i] := '0';
  if max>1 then max := max div 2
 end;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
i := 1;
j := 1;
Bit[1] := '';
Bit[2] := '';
Bit[3] := '';
Bit[4] := '';
Bit[5] := '';
Bit[6] := '';
Bit[7] := '';
Bit[8] := '';
Bit[9] := '';
Bit[10] := '';
Bit[11] := '';
Bit[12] := '';
Bit[13] := '';
Bit[14] := '';
Bit[15] := '';
Bit[16] := '';
Bit[17] := '';
max:=0;
wert:=0;
end;

procedure TForm2.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if Key = 13 then Button1Click(Sender)
end;
Angehängte Dateien
Dateityp: exe project1_176.exe (400,0 KB, 15x aufgerufen)
das Essen ist wie das Internet - Downstream ist immer angenehmer als Upstream
-
Warum missbraucht die ganze Programmierwelt Images als Paintboxen
 
CCRDude
 
#2
  Alt 8. Mai 2007, 17:55
Ungerade Anzahlen von Bits hab ich noch nie wirklich verwendet gesehen, die kleinste Einheit dürften Nibbles (4 bit) sein. Außerdem, wofür gibts Schleifen?

Delphi-Quellcode:
function ByteToBits(const ByteValue: byte): string;
var i: integer;
begin
   Result := '';
   for i := 7 downto 0
    do if (ByteValue and (1 shl i))>0
     then Result := Result + '1'
      else Result := Result + '0';
end;
  Mit Zitat antworten Zitat
markusj
 
#3
  Alt 8. Mai 2007, 18:00
Hi fast-Nachbar *gg*,

Um ehrlich zu sein: der Code hat Null Nutzwert ... es gibt deutlich effektivere Varianten, such mal nach Bits, zerlegen und Byte ... afair kommt der Code von negaH und ist a) kürzer und b) schneller:
Ich hätte ja gesagt, lass uns mal bei nem Bier darüber reden, aber naja, ...

Ich finds gerade net, also der Auszug aus meinem Projekt:
type TBits = array[1..8] of boolean;
Delphi-Quellcode:
function ByteToBits(input : byte) : TBits;
  var i : byte;
  begin
  i := 1;
  while input <> 0 do
   begin
   result[i] := odd(input);
   inc(i);
   input := input shr 1;
   end;
  while i <= 8 do
   begin
   result[i] := false;
   inc(i);
   end;
  end;
WICHTIG: TBits verträgt sich nicht mit dem TBits aus der VCL!

mfG
Markus

PS: Du kannst das ganze durch ändern der Variablen und Schleifendurchläufe auch auf Zahlen > Byte anwenden
Markus
  Mit Zitat antworten Zitat
Benutzerbild von dajuhsa
dajuhsa

 
Turbo Delphi für Win32
 
#4
  Alt 8. Mai 2007, 19:08
is eigentlich auch nicht wirklich als nützlich gedacht, aber ich bin halt net so ein guter programmierer und wollte mal wissn wie ihrs findet
  Mit Zitat antworten Zitat
markusj
 
#5
  Alt 8. Mai 2007, 20:44
Ich sags mal so ... es is ne nette Übung für Fallunterscheidungen, jetzt könntest du mal zu schleifen übergehn *g*

mfG
Markus
Markus
  Mit Zitat antworten Zitat
Benutzerbild von dajuhsa
dajuhsa

 
Turbo Delphi für Win32
 
#6
  Alt 18. Mai 2007, 19:41
wenn du die letzten paar zeilen meinst, wo alles in '' geändert wird:
ich hätte ja ne schleife gemacht, aber ich hatte lust 'n Büschn was zu schreiben
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:03 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