Array verfälschung im Builder?!



  • Hi!
    Also ich hab das Problem im BCB 5.0 das er ziemlich oft innerhalb meiner Programme die Arrays verfälscht ohne das ich sie ändere was mich ziemlich stört.

    Ich weiss nich was ich falsch mache jedoch lässt sich mein Problem auf folgendes Programm reduzieren..

    Man erstellt ein Button und zwei Label. Beim Button OnClick-Event fügt man folgendes ein:

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      int a[2];
      int b[2];
    
      a[0] = 10;
      Label1->Caption = IntToStr(a[0]);
      b[2] = 22;
      Label2->Caption = IntToStr(a[0]);
    }
    

    Beim testen ist zu erwarten das beim Klick auf den Button in beiden Labels 10 steht.
    Jedoch steht im ersten Label 10 und im zweiten Label 22.

    In diesem Code lässt sich das relativ schnell ändern indem die deklaration des Arrays auf 3 erhöht wird. Sprich:

    int a[3];
      int b[3];
    

    Jedoch arbeite ich jetzt manchmal mit Strukturen und da kann ich soviele von anlegen wie ich will - Egal ob ich 20 Deklariere und nur 10 benutze. Manchmal wird selbst da was abgeändert.
    Und da hab ich sogar manchmal das Problem das der Wert eines Arrays auf einen abgeändert wird, den ich in keiner anderen Variable benutze.

    Was mache ich falsch?



  • Das ist klar.

    Wenn du ein Array int b[2] hast, dann darfst du nur Index [0] und [1] beschreiben. Deshalb mache entweder das Array b größer, oder verringere den Index.



  • Das ist mit Sicherheit kein BCB-Problem.
    Verschoben nach "ANSI-C".



  • Nur mal so am Rande:

    Arrays sollte man vor Gebrauch initialisieren, da sie sonst u.U. Datenmüll enthalten!

    Kann das evtl ein Grund deiner Verfälschung sein??

    MfG


Anmelden zum Antworten