Einzelnen Beitrag anzeigen

Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.077 Beiträge
 
Delphi XE2 Professional
 
#9

Re: Auf einen standartisierten Wert aufrunden

  Alt 2. Mär 2006, 14:34
Versuch es mal hiermit.
In Edit1 gibst Du Deinen Wert ein, wenn dur die Enter-Taste drrückst sollte der (evtl. nächsthöhere) Standardwert in Edit2 stehen.
Hab ich nicht vollständig getestet......

Gruß, Klaus

Delphi-Quellcode:
const StdWidst:array [0..23] of integer=(10,11,12,13,15,16,18,
         20,22,24,27,30,33,36,39,43,47,51,56,62,68,75,82,91);

FUNCTION FindValue(const data:array of integer; value:integer):integer;
var first,last,actual:integer;
begin
   first:=Low(data);
   last:=High(data);
   repeat
      actual:=(first+last) shr 1;
      result:=data[actual];
      if result<value then first:=actual+1
         else if result>value then last:=actual-1
            else exit;
   until first>last;
   if first<=High(data) then result:=data[first];
end;

procedure TMain.Edit1KeyPress(Sender: TObject; var Key: Char);
var v:extended; vc:integer;
begin
   if key=#13 then begin
      val(edit1.Text,v,vc);
      edit2.text:=IntToStr(FindValue(StdWidst,ceil(v)));
   end else begin
      edit2.text:='';
   end;
end;
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat