Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi b <> 0 (https://www.delphipraxis.net/114321-b-0-a.html)

vsilverlord 23. Mai 2008 11:28


b <> 0
 
Hallo, ich hab nur eine Eleganzfrage, also es funktioniert schon.
Wie kann ich
Delphi-Quellcode:
if b<>0 then
a:=a/b
eleganter machen? Ich hab diese Klausel sehr häufig, bei vielen Rechnungen kann bei b 0 rauskommen.

Die Muhkuh 23. Mai 2008 11:30

Re: b <> 0
 
Delphi-Quellcode:
// Als Procedure
procedure MyDiv(var Dividend: Single; Divisor: Single);
begin
  if (Divisor <> 0) then
    Dividend := Dividend / Divisor;
end;

// Als Funktion:
function MyDiv(Dividend, Divisor: Single): Single;
begin
  if (Divisor <> 0) then
    Result := Dividend / Divisor;
end;

// Aufrufe:
// Procedure:
MyDiv(Dividend, Divisor);

// Funktion:
Dividend := MyDiv(Dividend, Divisor);
Vielleicht auch so:

Delphi-Quellcode:
// Als Funktion, die true zurück gibt, wenn geteilt wurde:
function MyDiv(var Dividend: Single; Divisor: Single): Boolean;
begin
  Result := Divisor <> 0;
  if (Result) then
    Dividend := Dividend / Divisor;
end;

// Aufruf
if (MyDiv(Dividend,Divisor)) then
  // es wurde geteilt
else
  // es wurde nicht geteilt
[edit] Schöne Variablennamen ;) [/edit]

Die Muhkuh 23. Mai 2008 11:33

Re: b <> 0
 
Macht er / mach ich doch oder hab ich was übersehen?

Mensch, Markus :mrgreen: Nicht wegeditieren :stupid:

marabu 23. Mai 2008 11:38

Re: b <> 0
 
Hallo,

dieses IF-Statement ist für sich genommen nicht verbesserungsfähig, lediglich bessere Variablennamen könnten eventuell noch Pluspunkte bringen.

Grüße vom marabu

Die Muhkuh 23. Mai 2008 11:41

Re: b <> 0
 
Zitat:

Zitat von marabu
dieses IF-Statement ist für sich genommen nicht verbesserungsfähig, lediglich bessere Variablennamen könnten eventuell noch Pluspunkte bringen.

Das ist klar. Ich hab der Einfachheit halber seine Variablennamen verwendet. Die kann er ja dann ändern, wie er mag. :)

[edit] Hab sie geändert :stupid: [/edit]

vsilverlord 23. Mai 2008 11:59

Re: b <> 0
 
ok danke, ich glaub ich lass es dann mal so, dann ist halt die zeile ein wenig länger. ich hab schon ziemlich viele eigene funktionen xD

Laufi 23. Mai 2008 12:20

Re: b <> 0
 
Hallo!

Du kannst auch einfach am Anfang von deinem Programm Set8087CW($133f); schreiben dann gibt es keine Fehler beim teilen durch 0 :)

Liebe Grüsse
Laufi

Die Muhkuh 23. Mai 2008 12:23

Re: b <> 0
 
Zitat:

Zitat von Laufi
Du kannst auch einfach am Anfang von deinem Programm Set8087CW($133f); schreiben dann gibt es keine Fehler beim teilen durch 0 :)

Was passiert, wenn Du es trotzdem machst? (Also was steht nachher in der zugewiesenen Variable?)

Und Fehlermeldungen unterdrücken ist nicht gerade sehr elegant, dann lieber programmseitig abfangen.

Jelly 23. Mai 2008 12:24

Re: b <> 0
 
Ic C# könnte man es so machen, aber Delphi solche Konstrukte leider nicht:

Code:
a = (b != 0) ? a / b : a;
Aber was hast du denn für ein Problem damit, deinen Code so zu verwenden wie du ihn hast :gruebel:

Delphi-Quellcode:
if b <> 0 then a := a / b;
Das ist grad mal 1 Zeichen mehr :mrgreen:

spaxxn 23. Mai 2008 12:29

Re: b <> 0
 
Delphi-Quellcode:
Result := IfThen(Divisor <> 0, Dividend/Divisor, Dividend);


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:02 Uhr.
Seite 1 von 4  1 23     Letzte »    

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