Announcement

Collapse
No announcement yet.

Werte von Array-Elementen werden nicht aktualisiert

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Werte von Array-Elementen werden nicht aktualisiert

    Hallo zusammen,

    ich werde folgendem Problem nicht Herr:

    <PRE>
    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;
    }
    </PRE>

    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.

  • #2
    <PRE>

    Hi Markus!

    Initialisiere dein Array vorher.
    memset( &Anz, '\0', sizeof( Anz ) );
    Es ist nicht ersichtlich ob deine
    long werte initialisiert werden.
    Viele haben folgende angewohnheit :
    int i;
    long x;
    ? mit welchem wert initialisiert
    Solche Programmiere sollte man die
    Hände abhacken.
    int i = 0;
    long x = 0;
    // schreibt man ein bischen mehr,
    aber weniger probleme

    Gruß Fred

    </PRE&gt

    Comment


    • #3
      Hallo Markus,

      die angegebenen Variablen initialisieren das Array mit den entsprechenden Werten (Kopie). Die folgende Schleife setzt die Werte im Array zurück und nicht die ursprünglichen Variablen. Wenn der Inhalt der Variablen zurückgesetzt werden soll dann schreib doch einfach:

      AnzahlGif = AnzahlTif = AnzahlBmp = ... = 1;

      Gruß Ud

      Comment


      • #4
        Hallo,

        @Fred:
        Ich hab die long-Werte als globale Variablen deklariert und initialisiert.
        Aber es ist mir unterdessen schon klar, warum es nicht geht. Es werden ja nur die Array-Werte und nicht die Variablen selber verändert.

        Ich machs aber jetzt so wie Udo das vorschlägt.
        Das ist wohl das Einfachste und es geht.

        @Udo:
        Danke !!

        Comment


        • #5
          Vielleicht könntest du ein Array von Referenzen benutzen:<pre>
          long Anz[12]& = {AnzahlGif, AnzahlTif, AnzahlBmp, AnzahlJpx, AnzahlMpx, AnzahlPpx, AnzahlScr, AnzahlTmp, AnzahlWmf, AnzahlMov, AnzahlZip, AnzahlExe};
          </pre>
          (beachte das "&").
          Ich weiß nicht, ob das so geht, und ob die Syntax stimmt -- mein C++ ist leider etwas eingerostet.
          <p>Ciao, Uli

          Comment


          • #6
            long *Anz[12] = {&AnzahlGif, &AnzahlTif, &AnzahlBmp, &AnzahlJpx, &AnzahlMpx, &AnzahlPpx, &AnzahlScr, &AnzahlTmp, &AnzahlWmf, &AnzahlMov, &AnzahlZip, &AnzahlExe}
            Günther

            Comment

            Working...
            X