AGB  ·  Datenschutz  ·  Impressum  







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

Tarifrechner

Offene Frage von "xsus"
Ein Thema von xsus · begonnen am 30. Okt 2011 · letzter Beitrag vom 31. Okt 2011
Antwort Antwort
Seite 1 von 2  1 2      
xsus

Registriert seit: 30. Okt 2011
7 Beiträge
 
Delphi 7 Personal
 
#1

AW: Tarifrechner

  Alt 30. Okt 2011, 19:12
Hey, also ich würde eine if - Anweisung aufstellen..wenn das bis 10 kg geht nimm tarif 1 usw.
Das hatte ich im folgendem probiert, bevor ich mich hierher gewendet habe:
Delphi-Quellcode:
function tarif(gewicht:real):byte;
begin
  if gewicht<=10 then
     gewicht:=1 else
        if (gewicht>10) and (gewicht<=20) then
            gewicht:=2 else
                if (gewicht>20) then
                   gewicht:=3
...aber wie Delphi mir selbst schon sagt, scheint das totaler mist zu sein ..der Rauskommende Wert soll ja vom Typ Byte sein, also eine Zahl ?

UND:..in der Procedure Ausgabe1 und Ausgabe2 kommt ja z.b. vor: "gebuehr:5:2"...was hat es plötzlich mit den Zahlen auf sich?^^

Sorry, wenn die Fragen zu doof sind

LG
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.874 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Tarifrechner

  Alt 30. Okt 2011, 19:18
Delphi-Quellcode:
function tarif(gewicht:real):byte;
begin
  if gewicht<=10 then
     tarif:=1 else
        if (gewicht>10) and (gewicht<=20) then
            tarif:=2 else
                if gewicht>20 then
                   tarif := 3;
end;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#3

AW: Tarifrechner

  Alt 30. Okt 2011, 19:21
Hi,

vllt. noch ein paar warme Worte zu Markus' Quelltext:
Das Problem bei deinem Code ist, dass du einfach die Variable Gewicht veränderst, aber die Außenwelt davon nichts mitbekommt. In Markus' Fall wird das Ergebnis dem Rückgabewert der Funktion (erreichbar über den Namen der Funktion oder über die Variable result) zugewiesen, sodass die Außenwelt den Wert auch mitbekommt.

Was die Zahlen angeht:
Soweit ich weiß beziehen die sich auf die Anzahl Stellen vor (in dem Fall 5) und nach (in dem Fall 2) dem Komma.


Edit:
Und noch was: Der else-Fall wird immer dann aufgerufen, wenn die Überprüfung der Bedingung des if fehl schlug. D.h. wenn <= 10 nicht gestimmt hat, kommst du in diesen ersten else-Fall und kannst sicher sein, dass das Gewicht > 10 ist - d.h. du kannst dir diesen Teil der Bedingung sparen. Gleiches beim letzten else.

LG, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
xsus

Registriert seit: 30. Okt 2011
7 Beiträge
 
Delphi 7 Personal
 
#4

AW: Tarifrechner

  Alt 30. Okt 2011, 19:25
Vielen Dank ihr beide!
Dann war ich garnicht so weit entfernt..ich dachte nur das ich tarif nicht verwenden darf, es sich nur um den namen der function handelt..und mir halt nur gewicht zur verfügung steht..jetzt hab ichs verstanden
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.904 Beiträge
 
Delphi 12 Athens
 
#5

AW: Tarifrechner

  Alt 30. Okt 2011, 19:35
Nun auch nochmal meinen Senf dazu:

- Du prüfst nicht ab, ob da womöglich jemand ein Gewicht <= 0 eingibt
- Du prüfst nicht ab, ob ein Gewicht >100 eingegeben wird
- Der in der Procedure Ablauf abgeprüfte Wert für Tarif wird nie erreicht.

Gruß aus dem hohen Norden

Thomas

PS: Ach ja, Dein Delphi meckert wahrscheinlich auch immernoch, daß der Funktion Tarif möglicherweise kein Ergebnis zugewiesen wird.
PPS: Um den Rückgabewert einer Funktion zu setzen kann man entweder den Namen der Funktion verwenden oder das reservierte Wort Result.
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP

Geändert von TBx (30. Okt 2011 um 19:39 Uhr)
  Mit Zitat antworten Zitat
xsus

Registriert seit: 30. Okt 2011
7 Beiträge
 
Delphi 7 Personal
 
#6

AW: Tarifrechner

  Alt 30. Okt 2011, 19:40
Und damit nicht genug ..wenn ich über 100 kg komme, zeigt er mir trotzdem ein Preis an und nicht Ausgabe2 und das nächste Problem: es hieß ja ..das paketgewicht ist grammgenau ..aber ich kann nur ganze Zahlen eingeben...HILFE
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.904 Beiträge
 
Delphi 12 Athens
 
#7

AW: Tarifrechner

  Alt 30. Okt 2011, 19:46
..aber ich kann nur ganze Zahlen eingeben...HILFE
versuch mal, den '.' oder das ',' als Dezimaltrenner zu verwenden, ich vermute mal, Du versuchst den falschen von beiden.
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
xsus

Registriert seit: 30. Okt 2011
7 Beiträge
 
Delphi 7 Personal
 
#8

AW: Tarifrechner

  Alt 30. Okt 2011, 19:50
also ich habe angefügt else tarife:=0 ..damit funktioniert das mit dem über 100 kilogramm und ich muss einen punkt anstatt einem komma eingeben (verwirrt mich total) ..damit müsste sich alles erledigt haben bis auf gewicht von kleinergleich 0 ?!

Und das weiß ich nicht, wie ich es deklariere..ansonsten ist das jetzt so in Ordnung oder?

Geändert von xsus (30. Okt 2011 um 19:53 Uhr)
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.904 Beiträge
 
Delphi 12 Athens
 
#9

AW: Tarifrechner

  Alt 30. Okt 2011, 20:00
Auf der Konsole wird stardardmäßig der Dezimalpunkt als Dezimaltrenner verwendet (liegt an der amerikanischen Herkunft des BS).

Dein Delphi meckert vermutlich immer noch, oder?

Zur Abprüfung, ob der eingegebene Wert kleiner oder gleich Null ist, bau eine entsprechende IF-Clause und weise dem Result ein entsprechendes Ergebnis zu. Dieses prüfst Du dann in der Procedure Abauf ab und verzweigst ggf. in eine Procedure ausgabe3, die dann den Hinweis enthält, daß Pakete ohne Gewicht oder mit einem negativen Gewicht Schwachfug sind.
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
xsus

Registriert seit: 30. Okt 2011
7 Beiträge
 
Delphi 7 Personal
 
#10

AW: Tarifrechner

  Alt 30. Okt 2011, 20:11
Dein Delphi meckert vermutlich immer noch, oder?
Delphi ist glücklicher denn jeh, nur ich nicht mehr!

PS: So, ich klaue dir jetzt mal das Refactoring (falls du sowas besitzt) und nun bennene mal diese Funktionen um.
Wo wirst du wohl weniger Arbeit haben?
.
Also das mit dem result sieht übersichtlicher aus und so aber ich schnalls nicht..würde es dir was ausmachen, mir das an meiner function zu zeigen? dann erhoff ich mir eher, es nachvollziehen zu können..ehm was ist REFACTORING?

PSS: Wenn es zufällig eine gleichnamige Funktion, mit passender Signatur, in einer anderen Unit gibt (die oben in Uses mit drin steht) und du vergißt auch nur einen Namen umzubenennen, dann war's daß, weil den Fehler suchst du erstmal eine Weile.
Das bedeutet, ich passe gut auf, wie ich was benenne?!

EDIT: doch..ich glaub ich habs verstanden, ich probiers mal eben ^^

EDIT2:
Delphi-Quellcode:
function tarif(gewicht:real):byte;
begin
  if gewicht>0 then
begin
  if (gewicht<=10) then
     tarif:=1 else
        if (gewicht<=20) then
            tarif:=2 else
                if (gewicht>20) and (gewicht<=100) then
                   tarif:=3 else
                       tarif:=0
end else
result:=0;
RICHTIG? Erstelle ich jetzt Ausgabe 3, aber wie verweiße ich dann darauf?

Geändert von xsus (30. Okt 2011 um 20:17 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

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 12:43 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