Werte von Array-Elementen werden nicht aktualisiert
-
Hallo zusammen,
ich werde folgendem Problem nicht Herr:void __fastcall TfrmDateisuche::AnzTreffer() { long Anz[12] = {AnzahlGif, AnzahlTif, AnzahlBmp, AnzahlJpx, AnzahlMpx, AnzahlPpx, AnzahlScr, AnzahlTmp, AnzahlWmf, AnzahlMov, AnzahlZip, AnzahlExe}; for(int i=0;i<12;i++) { Anz[i]=1; } AnzahlGif =1; //TESTZWECKE AnzahlGes=0; }
Ich möchte damit bezwecken, dass die Werte im Array resettet, also auf 0 gesetzt werden. Wenn jetzt z.B. AnzahlGif der Wert 7250 hat und ich lasse die Schleife mit dem Debugger durchlaufen, passiert folgendes: Bevor er das erste Mal Anz[i]=1; durchläuft, wird, wenn ich mit der Maus über Anz[i] fahre, folgendes angezeigt: Anz = {7250,1,1,1...}. Nachdem Anz[i]=1; durchlaufen wurde, wird Anz = {1,1,1,1...} angezeigt. Fahre ich mit der Maus auf AnzahlGif im Array, wird aber 7250 angezeigt. Und damit wird auch weitergerechnet. Erst wenn das testweise eingebaute AnzahlGif =1; durchlaufen wird, wird 1 angezeigt. Ich habe keinen blassen Schimmer, was ich hier falsch mache ? Vielleicht hat jemand von Euch das schon mal gehabt und kann mir helfen ?!?
Danke schon mal.
-
na wenn das ganze Anzahl* -Zeugs eigene variablen sind, werden die doch nicht verändert, wenn du die in ein array packst! du weisst dem array, doch lediglich den wert von Anzahl* zu und nicht die variable selber!
insofern ist das was der debugger sagt, auch richtig!
-
was aber geht, wäre folgendes:
int AnzahlGif = 100; int AnzahlJPG = 200; TList *List = new TList(); List->Add(&AnzahlGif); List->Add(&AnzahlJPG); for (int i = 0; i < List->Count; i++) { int *tmp = (int*) List->Items[i]; *tmp = 0; } delete List; List = NULL; ShowMessage(AnzahlGif); // 0 ShowMessage(AnzahlJPG); // 0
aber da ist es einfacher gleich AnzahlGif = 0; usw. zu schreiben...
-
Hallo Sunday,
also, nach Deiner ersten Antwort ist mir schon klar geworden, warum das nicht geht, vor allem, weil ich mich noch dunkel daran erinnern kann, dass ich das selbe Problem bei VBA für Excel auch schon Mal hatte.
Ich hab' jetzt so gemacht: AnzahlGif=AnzahlJPG=.....=1;
Das ist wohl das kürzeste und es funktioniert. Im Nachhinein frag ich mich sowieso, wieso ich das über ein Array machen wollte. Aber was solls.Danke auf jedenfall !!!
Gruß Markus