Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Umrechner von dem einsersystem in richtige zahlen (https://www.delphipraxis.net/155679-umrechner-von-dem-einsersystem-richtige-zahlen.html)

NewDelphiBenutzer 3. Nov 2010 17:33

Umrechner von dem einsersystem in richtige zahlen
 
Guten abend :)
also ich soll in der schule in delphi ein Programm machen mit Checkboxen. In dem Falle sind es 7 Stück nebeneinander. Und das ist dieses komische Zahlensystem, nur mit 1 und 0. Und diese Boxen liegen nebeneinander. Ich habe eine Variable namens Dezimalzahl eingefügt. Und wenn der Benutzer des Programmes ein Kreuz in der linken Box macht, soll dieser Zahl 128 dazu gerechnet werden. WEnn die zweite Box dann angekreuzt wird, wird +64 dann +32,+16,+8,+4,+2 und der ganz rechten +1.
Und dann soll halt wenn er alles, was er wollte angekreuzt hat und auf rechnen drückt, sollte dann diese ,,Fertige'' Zahl in ein editFeld springen. Und ich weiß nicht, wie ich das machen soll.
Und auch gut wäre, wenn sich der Wert danach wieder auf 0 stellt, damit man nochmal ausrechnen kann. Ich hoffe ihr versteht, was ich meine.
liebe grüße =)


Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

  var dezimalzahl: integer;


type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    CB64: TCheckBox;
    CB32: TCheckBox;
    CB16: TCheckBox;
    CB8: TCheckBox;
    CB128: TCheckBox;
    CB4: TCheckBox;
    CB2: TCheckBox;
    CB1: TCheckBox;
    Edit1: TEdit;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  if cb128.checked=true
    then begin dezimalzahl;=dezimalzahl+128;
           if cb64.checked=true
             then begin dezimalzahl;=dezimalzahl+64 ;
                    if cb32.checked=true
                      then begin dezimalzahl;=dezimalzahl+32;
                             if cb16.checked=true
                               then begin dezimalzahl;=dezimalzahl+16;
                                      if cb8.checked=true
                                        then begin dezimalzahl;=dezimalzahl+8;
                                               if cb4.checked=true
                                                 then begin dezimalzahl;=dezimalzahl+4 ;
                                                        if cb2.checked=true
                                                          then begin dezimalzahl;=dezimalzahl+2;
                                                                 if cb1.checked=true
                                                                   then begin dezimalzahl;=dezimalzahl+1;




end;

end.

Luckie 3. Nov 2010 17:40

AW: Umrechner von dem einsersystem in richtige zahlen
 
1. Das heißt Dual- oder Binärsystem. Das Einersystem kann es nicht geben, denn es bestünde nur aus einer Ziffer und mit einer Ziffer kann man kein Zahlensystem aufbauen. Das lässt mich zu dem Schluss kommen, dass du nicht verstanden hast, um was es geht.
2. Du weißt schon dass man in Delphi eine Zuweisung mit := macht und nicht mit ;=?
3. Was ist jetzt dein Problem?

mkinzler 3. Nov 2010 17:41

AW: Umrechner von dem einsersystem in richtige zahlen
 
1. Niemals auf True prüfen:
Delphi-Quellcode:
if cb64.checked then
2. so wie du es jetzt macht, werden "kleinere" Boxwn nur überprüft, wenn "größere" ebenfalls angehakt sind.

Delphi-Quellcode:
if cb128.checked then
    dezimalzahl := dezimalzahl+128;
if cb64.checked then ...
3. Zuweisung mit
Delphi-Quellcode:
:=

NewDelphiBenutzer 3. Nov 2010 18:00

AW: Umrechner von dem einsersystem in richtige zahlen
 
also müsste der quelltext jetzt so lauten?
Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

  var dezimalzahl: integer;


type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    CB64: TCheckBox;
    CB32: TCheckBox;
    CB16: TCheckBox;
    CB8: TCheckBox;
    CB128: TCheckBox;
    CB4: TCheckBox;
    CB2: TCheckBox;
    CB1: TCheckBox;
    Edit1: TEdit;
    Label2: TLabel;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  if cb128.checked
    then begin dezimalzahl:=dezimalzahl+128;
           if cb64.checked
             then begin dezimalzahl:=dezimalzahl+64 ;
                    if cb32.checked
                      then begin dezimalzahl:=dezimalzahl+32;
                             if cb16.checked
                               then begin dezimalzahl:=dezimalzahl+16;
                                      if cb8.checked
                                        then begin dezimalzahl:=dezimalzahl+8;
                                               if cb4.checked
                                                 then begin dezimalzahl:=dezimalzahl+4 ;
                                                        if cb2.checked
                                                          then begin dezimalzahl:=dezimalzahl+2;
                                                                 if cb1.checked
                                                                   then begin dezimalzahl:=dezimalzahl+1;




end;

end.

außerdem muss das programm ja die dezimalzahl, die sie ausgerechnet hat, ausspucken
sie soll in einem editfeld stehen. Wie schreibe ich das? irgendwas mit inttostr oder so glaub ich.
Und das Programm soll die dezimalzahl wieder auf 0 setzen nach dem rechnen, damit man nicht das programm erst zu machen soll, damit man eine neue zahl eingeben kann.

zeras 3. Nov 2010 18:23

AW: Umrechner von dem einsersystem in richtige zahlen
 
Du nimmst einfach das Ereignis Onklick aller Checkboxen und rechnest das dort aus.


Delphi-Quellcode:
procedure TForm9.cb1Click(Sender: TObject);
var
  dezimalzahl : integer;

begin
  dezimalzahl:=0;

  if cb128.checked then dezimalzahl:=dezimalzahl+128;
  if cb64.checked then dezimalzahl:=dezimalzahl+64 ;
  if cb32.checked then dezimalzahl:=dezimalzahl+32;
  if cb16.checked then dezimalzahl:=dezimalzahl+16;
  if cb8.checked  then dezimalzahl:=dezimalzahl+8;
  if cb4.checked  then dezimalzahl:=dezimalzahl+4 ;
  if cb2.checked  then dezimalzahl:=dezimalzahl+2;
  if cb1.checked  then dezimalzahl:=dezimalzahl+1;
  Edit1.Text:=IntToStr(dezimalzahl);
end;

NewDelphiBenutzer 3. Nov 2010 18:37

AW: Umrechner von dem einsersystem in richtige zahlen
 
okaaay funktioniert :)
danke Leute. Ihr seid die Helden des Tages =)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:17 Uhr.

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