![]() |
Function für Vorzeichen?
Hi!
Gibt's ne Funktion, der man einen Real übergibt und die dann 1 zurückgibt, wenn die Zahl positiv ist, und -1, wenn sie negativ ist? Dass man einfach schreiben kann
Delphi-Quellcode:
Bisher mach ich das so:
a := Vorzeichen(b)*5;
Delphi-Quellcode:
Aber das ist sicherlich nicht die eleganteste Art.
a := Abs(b)/b*5;
|
Re: Function für Vorzeichen?
Dafür gibts die Funktion
![]() |
Re: Function für Vorzeichen?
Delphi-Quellcode:
function IsPositive(Value: Integer): Boolean;
begin result := Value > 0; end; |
Re: Function für Vorzeichen?
@ 3_of_8:
Kann es sein, dass es sign auf delphi 5 noch nicht gibt? @ Luckie: Ich brauch nicht ne Funktion, die mir sagt, ob die Zahl positiv ist, sondern eine, die mir das Vorzeichen zurückliefert (also 1 oder -1). Sonst könnte ich ja auch ne If-Abfrage machen. |
Re: Function für Vorzeichen?
Wenns ein einfacher Term sein soll:
Delphi-Quellcode:
Im Fall einfach in eine Funktion schmeissen ;)
ord(value >= 0) * 2 - 1
greetz Mike [Edit] >= statt > , dann gehts auch mit 0... |
Re: Function für Vorzeichen?
Einfach Math importieren.
@Jason: Das geht nicht, wenn du ne 0 reinbekommst. |
Re: Function für Vorzeichen?
also ich weiß nicht, was du hast?
Delphi-Quellcode:
[add]
If X >= 0 Then Positiv Else Negativ;
PS: das sagt mein Delphi :zwinker:
Delphi-Quellcode:
// Unit Math
function Sign(const AValue: Integer): TValueSign; begin Result := ZeroValue; if AValue < 0 then Result := NegativeValue else if AValue > 0 then Result := PositiveValue; end; |
Re: Function für Vorzeichen?
Ich hätt das jetzt so gelöst:
Delphi-Quellcode:
function Sign(const AValue: Integer): Integer;
asm cmp eax, 0 ja @positive cdq mov eax, edx ret @positive: mov eax, 1 end; |
Re: Function für Vorzeichen?
Delphi-Quellcode:
function Vorzeichen(Value: Integer): Char;
begin result:='+'; if (Value < 0) then result:='-'; end; |
Re: Function für Vorzeichen?
So hat er das nicht gemeint. Er wollte eine Integer-Wert. Außerdem hast du eine unnötige Zuweisung drin und die 0 hat kein Vorzeichen, auch kein positives. ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:31 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 by Thomas Breitkreuz