// Potenzieren geschieht eigentlich über die Funktionen Power() bzw. IntPower()
// aus der Unit Math. Wer aber keine Lust hat, für eine einzige Potenzierung
// die Unit einzubinden oder vielleicht nur eine alte Delphiversion besitzt,
// kann über den natürlichen Logarithmus in den meisten Fällen auch zu
// einem Ergebnis kommen.

// Getestet mit D4 unter WinME

function hoch(basis, exponent: extended): extended; 
begin 
  result := exp(exponent * Ln(basis)); 
end; 
 
// Beispielaufruf 
procedure TForm1.Button3Click(Sender: TObject); 
var 
  erg: extended; 
begin 
  erg := hoch(2, 5); // zwei hoch fünf 
  showmessage(floattostr(erg)); // 32 
  // --- oder --- 
  erg := hoch(5 * 2 + 7, 1.7); // siebzehn hoch einskommasieben 
  showmessage(floattostr(erg)); // 123,527361840807 
  // --- usw. --- 
end; 
 
 
// Wenn man ohne Gleitkommazahlen und mit positivem Exponenten arbeitet, 
// kann man auch folgenden Code nehmen: 
 
function IHoch(basis: integer; exponent: word): int64; 
var 
  x: integer; 
begin 
  result := 1; 
  for x := 1 to exponent do 
    result := result * abs(basis); 
  if odd(exponent) and (basis < 0) then 
    result := -result; 
end; 
 
// Beispielaufruf 
procedure TForm1.Button2Click(Sender: TObject); 
begin 
  showmessage(floattostr(IHoch(-10, 3))); // -1000 
end; 
 
// ------------------------------------------------------------- 
 
// In Umkehrung der obersten Funktion kann man natürlich auch die Wurzel ziehen. 
 
function wurzel(exponent, basis: extended): extended; 
begin 
  if exponent = 0 then 
    result := 1 
  else if basis = 0 then 
    result := 0 
  else 
    result := exp(Ln(basis) / exponent); 
end; 
 
// Beispielaufruf 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
  // dritte Wurzel aus 64 
  showmessage(floattostr(wurzel(3, 64))); // 4 
  // siebente Wurzel aus 100 
  Edit1.text := floattostr(wurzel(7, 100)); // 1,93069772888325 
end;





 

Zugriffe seit 6.9.2001 auf Delphi-Ecke