// Dividieren von Integerwerten mit festgelegten Nachkommastellen:


// Getestet mit D4 unter XP

function Divi(zlr, nnr, maxstellen: integer): string; 
var 
  x, i, r: integer; 
  procedure rechnen(w: integer); 
  begin 
    i := (w div nnr); 
    result := result + inttostr(i); 
    r := (w mod nnr); 
  end; 
begin 
  x := 0; 
  result := ''; 
  rechnen(zlr); 
  if r <> 0 then result := result + Decimalseparator; 
  while (r <> 0) and (x < maxstellen) do 
  begin 
    if (r < nnr) then r := (r * 10); 
    rechnen(r); 
    inc(x); 
  end; 
end; 
 
// Beispielaufruf 101 : 37

procedure TForm1.Button1Click(Sender: TObject); 
var s: string; 
begin 
  s := divi(101, 37, 20); 
  showmessage(s); 
end; 

// -----------------------------------------------------------------------

// Erweiterung mit der Möglichkeit zum Runden der letzten Nachkommastelle:
 

function DiviX(zlr, nnr, maxstellen: integer; runden: boolean): string; 
var 
  x, i, r: integer; 
  procedure rechnen(w: integer); 
  begin 
    i := (w div nnr); 
    result := result + inttostr(i); 
    r := (w mod nnr); 
  end; 
  procedure weiter; 
  begin 
    if (r < nnr) then r := (r * 10); 
  end; 
begin 
  x := 0; 
  result := ''; 
  rechnen(zlr); 
  if r <> 0 then result := result + Decimalseparator; 
  while (r <> 0) and (x < maxstellen - 1) do 
  begin 
    weiter; 
    rechnen(r); 
    inc(x); 
  end; 
  if r = 0 then exit; 
  weiter; 
  i := (r div nnr); 
  r := (r mod nnr); 
  if (r = 0) or not runden then begin 
    result := result + inttostr(i); 
    exit; 
  end; 
  weiter; 
  x := (r div nnr); 
  if x >= 5 then inc(i); 
  result := result + inttostr(i); 
end; 
 
// Beispielaufruf 111 : 66 mit runden 
 
procedure TForm1.Button2Click(Sender: TObject); 
var s: string; 
begin 
  s := DiviX(111, 66, 29, true); 
  showmessage(s); 
end; 
 


 

Zugriffe seit 6.9.2001 auf Delphi-Ecke