also, ich hab drei werte zu einem record zusammengefasst und das in einen array gepackt...nun will ich den ganzen kram kürzen, nur irgendwas stimmt da nicht...
die werte können minimal 1 sein und höchstens 20
es soll nur gekürzt werden wenns bei allen geht
also im Button2Click wird jedes element erst gekürzt, und dann in die listbox geschrieben
nur in der listbox steht dann 100mal "0:0:0"
gesamt is die anzahl der elemente
results is der array
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
procedure kuerzen(i:integer);
var j:integer;
begin
for j:=20 downto 2 do
if (results[i].metall mod j=0) and
(results[i].kristall mod j=0) and
(results[i].tritium mod j=0)
then begin
results[i].metall:=results[i].metall div j;
results[i].kristall:=results[i].kristall div j;
results[i].tritium:=results[i].tritium div j;
end;
end;
begin
ListBox1.Clear;
for i:=1 to gesamt do
begin
kuerzen(i);
ListBox1.Items.Add(inttostr(results[i].metall)+':'
+inttostr(results[i].kristall)+':'
+inttostr(results[i].tritium));
end;
end;
also ich find das eigentlich total logisch, aber irgendwie haut das nicht hin....
auch wenn ichs in kuerzen nur von 2 bis 2 laufen lasse kommt der fehler...
nochma edit:
folgender code funzt:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var t1,t2,i:integer;
begin
t1:=strtoint(Edit1.Text);
t2:=strtoint(Edit2.Text);
for i:=20 downto 2 do
if (t1 mod i=0) and (t2 mod i=0)
then begin
t1:=t1 div i;
t2:=t2 div i;
end;
showmessage(inttostr(t1)+':'+inttostr(t2));
end;