Hallo,
das ist wie Augenpulver: Edit1 und Edit2 sind nunmal keine leicht zu lesenden Komponentennamen. Außerdem musst du nicht alle möglichen Teiler probieren, wenn du zuerst den größten gemeinsamen Teiler bestimmtst:
Delphi-Quellcode:
function GCD(n1, n2: Integer): Integer;
begin
if n2 = 0
then Result := n1
else Result := GCD(n2, n1 mod n2);
end;
procedure Normalize(var Numerator, Denominator: Integer);
var
n: Integer;
begin
if Numerator <> 0 then
begin
n := GCD(Numerator, Denominator);
Numerator := Numerator div n;
Denominator := Denominator div n;
if Denominator < 0 then
begin
Numerator := - Numerator;
Denominator := - Denominator;
end;
end else
begin
Numerator := 0;
Denominator := 1;
end;
end;
Du musst dir aber zuerst mal ein Konzept ausdenken, exakt wann du von Integer- auf Float-Arithmetik wechselst.
Freundliche Grüße vom marabu