sunday_2 - Mi 13.11.02 10:50
Titel: Zuweisungsproblem
Hi Leute,
habe folgendes Problem. Ich möchte in einer Schleife die Inhalte von tormatrix an das Array AAuswahl übergeben. Allerdings sollen doppelte Werte in AAuswahl vermieden werden. Die Inhalte von AAuswahl sollen anschließend in einer ComboBox auswählbar sein. Ich glaube mein Fehler liegt irgendwo in der If-Abfrage, da die Werte übergeben werden.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| a:=1; for i:= 1 to 23 do for j:= 1 to 9 do begin if AAuswahl[a] = tormatrix[i,j].Name then continue else AAuswahl[a] := tormatrix[i,j].Name; a:=a+1; end;
for i:= 1 to 1000 do ComboBox1.Items.Add(AAuswahl[i]); |
Was mach ich falsch?
LCS - Mi 13.11.02 11:07
Hi
ich sehe hier zwei Probleme und einen Fehler.
Quelltext
1: 2: 3: 4: 5: 6:
| if AAuswahl[a] = tormatrix[i,j].Name then continue else AAuswahl[a] := tormatrix[i,j].Name; a:=a+1; end; |
An dieser Stelle frägst du nur ab ob der
aktuelle Eintrag von AAuswahl gleich tormatrix[].Name ist. Du müsstest aber Prüfen ob der Inhalt von tormatrix[].Name schon irgendwo in AAuswahl steht. Du musst hier an der Stelle also in einer Schleife alle a durchgehen.
Dazu kommt, und das ist jetzt der Fehler, dass a
immer erhöht wird. Ich nehme mal stark an das soll aber nur passieren, wenn ein neuer Eintrag in AAuswahl eingetragen wurde. Es muss also heissen:
Quelltext
1: 2: 3: 4: 5:
| else begin AAuswahl[a] := tormatrix[i,j].Name; a:=a+1; end; end; |
Das zweite Problem steckt hier:
Quelltext
1: 2:
| for i:= 1 to 1000 do ComboBox1.Items.Add(AAuswahl[i]); |
Ich geh mal davon aus, dass du die Combobox vorher gelöscht hast (wehe wenn nicht :mrgreen: ), aber auf jeden Fall trägst du 1000 Einträge ein, egal ob was drinsteht oder nicht. Besser wäre die Schleife nicht bis 1000 sondern nur bis a - 1 auszuführen.
Gruss Lothar