Autor Beitrag
ReddY
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31

Win 2000

BeitragVerfasst: Do 02.11.06 17:54 
Hiho.

Ich wollte ein Programm schreiben, was mir aus 10 Editfeldern zahlen in 10 verschiedene Listboxen sortiert. Problem: Bei der Listbos von 11-20 klappt das nicht. Wieso ? Hab den Code mal unten gepostet. Danke :9

Und: Wie würdet ihr das machen, wenn ihr in den Listboxen die Zahlen der Größe nach nochmal sortieren wolltet ? Hat wer ne Anregeung ? Danke

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
procedure TForm1.Button1Click(Sender: TObject);
var z:array[1..10of integer;  //Bestimmung der Array - 10 Zahlen die sortier werden müssen
var i:integer;
begin

listbox1.items.Clear;
listbox2.items.Clear;
listbox3.items.Clear;
listbox4.items.Clear;
listbox5.items.Clear;
listbox6.items.Clear;
listbox7.items.Clear;
listbox8.items.Clear;
listbox9.items.Clear;
listbox10.items.Clear;

// Zuweisung der 10 Zahlen zu den jeweiligen EditFeldern
z[1]:=strtoint(edit1.text);
z[2]:=strtoint(edit2.text);
z[3]:=strtoint(edit3.text);
z[4]:=strtoint(edit4.text);
z[5]:=strtoint(edit5.text);
z[6]:=strtoint(edit6.text);
z[7]:=strtoint(edit7.text);
z[8]:=strtoint(edit8.text);
z[9]:=strtoint(edit9.text);
z[10]:=strtoint(edit10.text);

// Anfang der Schleife
for i:= 1 to 10 do
// 0 -10
if (z[i] >=0and (z[i] <=10then
begin
listBox1.Items.Add(IntToStr(z[i]));
end;
// 11-20
if (z[i] >10and (z[i] <=20then
begin
listbox2.items.add(inttostr(z[i]));
end;
end;


Moderiert von user profile iconjasocul: Quote-Tags durch Delphi-Tags ersetzt

_________________
Ordnung braucht nur der Dumme. Das Genie beherrscht das Chaos! (Albert Einstein)
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Do 02.11.06 18:01 
Ich würde das vereinfachen:

ausblenden Delphi-Quelltext
1:
Form.FindComponent( 'ListBox'+IntToStr( Z[i] / DIV 10)+1as TListBox).add( ...					

_________________
Markus Kinzler.
azubi_20
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 593

WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
BeitragVerfasst: Do 02.11.06 18:02 
user profile iconReddY hat folgendes geschrieben:
Bei der Listbos von 11-20 klappt das nicht.

wie äußert sich das ? (absturz, kein Eintrag ... )
was passiert wenn du mit einzelschritt durchgehst ?
ReddY Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31

Win 2000

BeitragVerfasst: Do 02.11.06 18:05 
na ja ... der trägt einfach nix ein!
Einloggen, um Attachments anzusehen!
_________________
Ordnung braucht nur der Dumme. Das Genie beherrscht das Chaos! (Albert Einstein)
azubi_20
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 593

WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
BeitragVerfasst: Do 02.11.06 18:07 
ok hättest du dein Programm schrittweise mit dem Debugger durchgeführt, hättest du germerkt, dass die betreffende Stelle nicht innerhalb der Schleife liegt und daher nicht erreicht wird.
So müsste das richtig heißen :

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
// Anfang der Schleife
for i:= 1 to 10 do
begin
  // 0 -10
  if (z[i] >=0and (z[i] <=10then
  begin
  listBox1.Items.Add(IntToStr(z[i]));
  end;
  // 11-20
  if (z[i] >10and (z[i] <=20then
  begin
  listbox2.items.add(inttostr(z[i]));
  end;
end;
end;