Announcement

Collapse
No announcement yet.

Feld eines Datensatzes mit dem Inhalt eines Edit vergleichen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    Kann sein, dass es das bei Delphi 5 noch nicht gibt...

    Mal ein grober Auszug aus der Hilfe:

    Die Funktion gibt an, ob zwei Gleitkommawerte (annähernd) gleich sind.

    SameValue(A, B, Epsilon) :Boolean

    Beschreibung

    Mit SameValue können Sie feststellen, ob zwei Gleitkommawerte gleich oder annähernd gleich sind.

    A und B sind die zu vergleichenden Werte.

    Epsilon ist die maximale Differenz, mit der A und B noch als gleich angesehen werden.

    Wenn man dann noch ein bisschen im Math-unit kramt:
    const
    FuzzFactor = 1000;
    ExtendedResolution = 1E-19 * FuzzFactor;

    <PRE>
    function SameValue(const A, B: Extended; Epsilon: Extended): Boolean;
    begin
    if Epsilon = 0 then
    Epsilon := Max(Min(Abs(A), Abs(B)) * ExtendedResolution, ExtendedResolution);
    if A > B then
    Result := (A - B) <= Epsilon
    else
    Result := (B - A) <= Epsilon;
    end;
    </PRE>

    Die Funktion ist bei der Rundung dafür da, ganze Zahlen mit round auch zu ganzen Zahlen zu machen, z.B 1.9999999999999999999999 zu 2,0. Sonst gibts beim Trunc dann 1 statt 2.

    Grüße

    Juli

    Comment


    • #17
      Hallo.<BR>
      <BR>
      Habe es jetzt mal so versucht.<BR>
      <PRE>
      function THauptform.x_Round(Wert: extended): extended;
      begin

      if Wert = 0 then Result := 0;

      if Wert > 0
      then begin
      Wert := Wert * 100;
      Wert := Wert + 0.5;
      Wert := Trunc(wert);
      Result := Wert / 100;
      end;

      if Wert < 0
      then begin
      Wert := Wert * 100;
      Wert := Wert - 0.5;
      Wert := Trunc(wert);
      Result := Wert / 100;
      end;

      end;

      </PRE>
      <BR>
      Scheint zu funktionieren.<BR>
      <BR>
      MFG<BR>
      Marko Jan

      Comment


      • #18
        Irgendwie verstehe ioh mal wieder nicht das Problem:

        Samevalue war doch perfekt. Falls nicht vorhanden, einfach nachprogrammieren:

        statt:

        if Wert1 = Wert2 then ...

        einfach schreiben:

        if abs(Wert1 - Wert2) < 0.00001 then...

        mfg
        Lutz-Peter Erasmu

        Comment

        Working...
        X