Thema: Delphi kuerzen von 3 werten

Einzelnen Beitrag anzeigen

Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#1

kuerzen von 3 werten

  Alt 28. Okt 2004, 21:15
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;
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat