Array Grösse zur Laufzeit = Absturz



  • hi forum

    ich erstelle zur Laufzeit eine variable Con vom type String und fordere diese natürlich mit new an. Die grösse des arrays hole ich mir durch eine non-visuall komponente.

    String *Con = new String[Form1->Conoe->Items->Count];

    das ist doch richtig so oder?
    Jedenfalls stürzt mir das programm deswegen ab. EAccess violation oder so..
    Wenn ich die array-grösse mit einem integer also einer zahl festlege, klappt alles wie es soll.

    ich muss vielleicht noch was dazu sagen. der Count der komponente wird glaube ich selber erst zur laufzeit gespeisst, und der Count ist standard evl. auf -1 kann das sein? Weil dann macht es natürlich sinn. Eine array-grösse von -1 kann nicht gut gehen :p



  • ach hab den fehler gelöst. war auch logisch warums nicht geht.
    also ich habe nun am anfang einfach nur

    TForm *Form1;
    String *Kontakte; //Hier weil nach andere funktionen drauf zugreiffen müssen

    und dann in einer funktion, nachdem Count gespeisst wurde, habe ich:

    Kontakte = new String[App->wab->Items->Count];

    und in einer anderen funktion dann mal delete[] Kontakte;

    Das ist doch richtig so oder?



  • noch eine frage.

    wie kann ich die array-grösse auslesen? sizeof bringt mir da nix 🙂
    also wenn z.B. Con[234] möchte ich folgendes auslesen: 234





  • ehm ist das jetzt die antwort auf meine letzte frage? ich möchte ja nur wissen wie ich die anzahl also array-grösse rausfinden kann. also wenn Con[5] möchte ich hier die zahl 5 erhalten.



  • anzahl = sizeof(array) / sizeof(element_typ);
    


  • cool danke.

    mit element_typ meinst du in meinem fall dann wohl "String". das scheint dann ja wohl durch vier dividiert zu werden. hat den ein String element 4 bytes?

    int num = sizeof(Con) / sizeof(String);

    ...?



  • Hier ein kleines Beispiel:

    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
    char alpha[]="Test";
    Form1->Caption = sizeof(alpha);
    }
    

    Wert ist 4 🙂

    wenn jedoch alpha den Text "Tester" enthält gibt es logischer-weise 6 wieder 🙂



  • Ag3nt schrieb:

    char alpha[]="Test";
    ...
    Wert ist 4

    Wert ist 5.



  • ja schon ausgabe jedoch 4 🙂

    0-4 = 5 klar 🙂



  • Ag3nt schrieb:

    Wert ist 4 🙂

    wenn jedoch alpha den Text "Tester" enthält gibt es logischer-weise 6 wieder 🙂

    Hast du es getestet?
    Wert ist 5
    die Ausgabe im Capition ist 5
    geanu wie Jansen es sagte, und bei "Tester" kommt 7 in die Caption.

    Und weißt du auch warum das so ist?

    Ansonsten bitte Antworten und Codes mit dem Vorgegeben des Fragenden kombinieren.
    Sonst wird man Konfus beim lesen, erst String aus Struct dann char, aua.

    Edit:
    Zitate bitte auf das Notwendigste beschränken. Danke!


Log in to reply