Autor Beitrag
sunday_2
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101


Delphi 7.0
BeitragVerfasst: Mi 13.11.02 09:50 
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.
ausblenden 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?

_________________
Gruß Sunday

... wer nicht fragt, bleibt dumm!!!
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Mi 13.11.02 10:07 
Hi
ich sehe hier zwei Probleme und einen Fehler.
ausblenden 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:
ausblenden Quelltext
1:
2:
3:
4:
5:
 else begin 
  AAuswahl[a] := tormatrix[i,j].Name; 
  a:=a+1;
 end; 
end;


Das zweite Problem steckt hier:
ausblenden 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

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
sunday_2 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101


Delphi 7.0
BeitragVerfasst: Mi 13.11.02 11:43 
Hi Lothar,

Leider läuft es immer noch nicht richtig.
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
for k := 1 to 20 do
          for i:= 1 to 23 do
             for j:= 1 to 9 do
               begin
               if  AAuswahl[k] = tormatrix[i,j].Name then
                   continue
               else
                   AAuswahl[k] := tormatrix[i,j].Name;
               end;
          for i := 1 to k-1 do
          ComboBox1.Items.Delete(i);
          for i:= 1 to k-1 do
          ComboBox1.Items.Add(AAuswahl[i]);
        end;


Weißt du warum?

_________________
Gruß Sunday

... wer nicht fragt, bleibt dumm!!!