AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Boolean

Ein Thema von Bastrollo · begonnen am 26. Jun 2007 · letzter Beitrag vom 27. Jun 2007
Antwort Antwort
Bastrollo

Registriert seit: 17. Sep 2006
Ort: Hamburg
12 Beiträge
 
Delphi 7 Enterprise
 
#1

Boolean

  Alt 26. Jun 2007, 17:04
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 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


    function rech(groesse:integer; b:boolean):integer; 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 was denn Extended?

Wenn mir jemand helfen kann vielen dank
mfg basti
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Boolean

  Alt 26. Jun 2007, 17:07
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.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Boolean

  Alt 26. Jun 2007, 17:11
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.
  Mit Zitat antworten Zitat
Bastrollo

Registriert seit: 17. Sep 2006
Ort: Hamburg
12 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Boolean

  Alt 26. Jun 2007, 17:18
Erst mal danke euch beiden !!

Zitat von Apollonius:
round() oder trunc()
es läuft nun aber er rundet nicht auf oder ab

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

mfg basti

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

//Edit

Danke Dunkel 1a
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

Registriert seit: 26. Mär 2007
Ort: Klingenstadt
541 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Boolean

  Alt 26. Jun 2007, 17:21
TRUNC schneidet einfach nur die Nachkommastellen ab. Nimm lieber ROUND, das rundet!
Es ist zu wahr um schön zu sein...
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Boolean

  Alt 27. Jun 2007, 09:09
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...
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#7

Re: Boolean

  Alt 27. Jun 2007, 09:33
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;
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Boolean

  Alt 27. Jun 2007, 09:43
Ueber den Umgang mit Boolean

Wenn Phoenix schon schneller war dann mach ich wenigstens noch nen Link rein. ^^
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Boolean

  Alt 27. Jun 2007, 09:45
@TeronG: Der Link wurde bereits gepostet Nächstes mal einfach die anderen Beitrage auch anschauen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Boolean

  Alt 27. Jun 2007, 09:47
mea culpa
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  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 17:02 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