Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Boolean (https://www.delphipraxis.net/94761-boolean.html)

Bastrollo 26. Jun 2007 16:04


Boolean
 
Huhu mal wieder


Heute hänge ich an folgender Aufgabe:
Undzwar ich habe ein Editfeld in dem ich meine Grösse angeben soll. dadrunter sind 2 radiobuttons mit denen ich Mann oder Frau auswähle. So dies ist eine Aufgabe aus der Schule :D also net wundern ;P
So nun mit if-strukturen ist das ja ganz einfach zu machen aber nun habe ich die aufgabe das mit einer function zu machen. Das ja auch noch alles einfach jedoch hänge ich an der Aufgabe mit Boolean zu arbeiten. Ich soll eine Zahl und eine bollsche Variable übergeben doch das will net recht


Delphi-Quellcode:
    function rech(groesse:integer; b:boolean):integer;
Delphi-Quellcode:
var faktor,egross,ergebnis:integer; a:boolean;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
egross:=strtoint(edit1.text);
if radiobutton1.checked then a:=true ;
if radiobutton2.checked then a:=false;
ergebnis:=rech(egross,a);
label1.caption:=inttostr(ergebnis);
end;

function Tform1.rech(groesse:integer; b:boolean):integer;
begin
if b= true then result:= (groesse-100)*0.9 ; // So hier merkert er *
if b=false then result:=(groesse-100)*0.85;
end;
*E2010 Inkompatible Typen'Integer' und 'Extended' oO :wiejetzt: was denn Extended?

Wenn mir jemand helfen kann vielen dank
mfg basti

Apollonius 26. Jun 2007 16:07

Re: Boolean
 
Wenn du mit der Kommazahl 0,9 multiplizierst, kommt nicht zwingend eine ganze Zahl raus. Du musst das Ergebnis noch mit round() oder trunc() runden.
Nebenbei bemerkt ist dein if-Konstrukt nicht ideal. Wie schon oft erwähnt, sollte man nie mit true vergleichen, und wozu gibts außerdem das if-else.

Matze 26. Jun 2007 16:11

Re: Boolean
 
Damit du das nie mehr "falsch" machen wirst: Über den Umgang mit Boolean.
Schau's dir an, das wird dir helfen, zu verstehen, wieso du unsauber programmiert hast. :)

Bastrollo 26. Jun 2007 16:18

Re: Boolean
 
Erst mal danke euch beiden !!

Zitat:

Zitat von Apollonius
round() oder trunc()

es läuft nun aber er rundet nicht auf oder ab

Delphi-Quellcode:
if b=false then result:=trunc((groesse-100)*0.85);
ach und das mit if vergleichen wegen true oder false ist nicht so wichtig
für nen anfänger reichts :D

mfg basti

btw Das Tutorial habe ich schon gelesen aber das zu hoch für mich :D

//Edit

Danke Dunkel 1a :dancer:

Dunkel 26. Jun 2007 16:21

Re: Boolean
 
TRUNC schneidet einfach nur die Nachkommastellen ab. Nimm lieber ROUND, das rundet!

RavenIV 27. Jun 2007 08:09

Re: Boolean
 
Zitat:

Zitat von Dunkel
TRUNC schneidet einfach nur die Nachkommastellen ab. Nimm lieber ROUND, das rundet!

Aber pass auf, das Round() rundet nicht immer richtig.
Hier in der DP gab's mal einen Fix dazu. Einfach suchen...

Phoenix 27. Jun 2007 08:33

Re: Boolean
 
Argl. NIE mit = false oder = true vergleichen. Das geht in die Hose.
Und wenn radiobutton1 checked ist, kann radiobutton2 nur nicht checked sein. Also reicht es das einmal zuzuweisen.
Und auch hier NIE mit = false oder = true vergleichen. Booleans sind entweder true oder false.

Also:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  // ...
  ergebnis := rech(egross, radiobutton1.checked );
end;

function Tform1.rech(groesse:integer; b:boolean):integer;
begin
  if b then
    result := round((groesse-100)*0.9);
  else
    result := round((groesse-100)*0.85);
end;

TeronG 27. Jun 2007 08:43

Re: Boolean
 
Ueber den Umgang mit Boolean

Wenn Phoenix schon schneller war dann mach ich wenigstens noch nen Link rein. ^^

SirThornberry 27. Jun 2007 08:45

Re: Boolean
 
@TeronG: Der Link wurde bereits gepostet :wink: Nächstes mal einfach die anderen Beitrage auch anschauen.

TeronG 27. Jun 2007 08:47

Re: Boolean
 
:oops: mea culpa


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:14 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