Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Runden auf einen bestimmten Wert (https://www.delphipraxis.net/142140-runden-auf-einen-bestimmten-wert.html)

Cire002 22. Okt 2009 16:03


Runden auf einen bestimmten Wert
 
Hi ;)

Irgedwie bin ich im Praktikumssemster angekommen und soll ein Programm für ein Virtuelles Musicinstrument schreiben, angelehnt an den Theremin.
Dies soll ich über verschiedene Eingabemöglichkeiten realsieren.
zb. Ein elektromagntisches Trackersystem mit 2 sensoren oder eine Webcam die die Bewegung der Hände erfasst.
So das reicht an Vorgeschichte^^

Nun steh ich vor einem ganz natürlichen Problem, das ich die daten nicht so bekommen wie ich sie wirklich brauche.
Es würde mir das Leben unheimlich erleichtern, wenn es in delphi 7 ein funktion gäbe die Werte in ein bestimmte Richtung runden.
Als Beispiel: Ich hab zwischen 10 Werten 3 Punkte auf die gerundet werden soll, immer dort wo er am nähsten dran ist.
Weiß jmd ob es so was schon gibt oder ob ich mir da selber was ausdenken sollte?

MFG Eric

Wolfgang Mix 22. Okt 2009 16:09

Re: Runden auf einen bestimmten Wert
 
Was Du suchst, findest Du wahrscheinlich hier

Gruß

Wolfgang

Tryer 22. Okt 2009 16:12

Re: Runden auf einen bestimmten Wert
 
Etwas fertiges gibt es da nicht, aber es sollte doch wohl kein Problem sein den Wert mit den zwei "Bruchstellen" zu vergleichen und danach den passenden der drei Werte auszuwählen?

Grüsse, Dirk

Sir Rufo 22. Okt 2009 16:42

Re: Runden auf einen bestimmten Wert
 
Da dauert das Suchen ja länger als das Tippen ;)
Delphi-Quellcode:
function RoundTo( Value : extended; ToValue : array of extended ) : extended;
  var
    idx : integer;
  begin
    if High(ToValue) < 0 then
      Result := Value
    else
      begin
        Result := ToValue[ Low(ToValue) ];
        for idx := Low(ToValue) + 1 to High(ToValue) do
          if Abs( Result - Value ) > Abs( ToValue[ idx ] - Value ) then
            Result := ToValue[ idx ];
      end;
  end;
cu

Oliver


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:00 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