TImageList->Add => Access violation ?



  • Ich versuche zu einer ImageList ein Bitmap hinzuzufügen.

    IL->Add(bmp2, NULL);
    

    Wenn ich das nun im Konstruktor des Formulares mache klappt das auch wunderbar.

    Wenn ich den selben Code aber beispielsweise beim OnClick eines Buttons ausführen will, erhalte ich das Signal SIGSEGV (11) und eine Access Violation.

    Bei beidem wird vorher bmp2 aus einer Datei geladen und auf 16x16 px resized. Ich kann mir nicht erklären, wo der Fehler sein sollte...



  • Die logische Vermutung wäre, dass die ImageList-Instanz [noch] nicht [mehr] existiert.
    Zeig doch mal den kompletten Code eines Minimalprojektes, in dem sich das Problem nachvollziehen lässt.



  • ja das hab ich mir auch gedacht, aber das wird auch zwischendrin nirgendwo deleted oder so...

    __fastcall TMainFrm::TMainFrm(TComponent* Owner)
            : TForm(Owner)
    {
    TRect ARect;
       bmp->Width   = 128;
       bmp->Height  = 128;
       ARect = Rect(0, 0, 16, 16);
       bmp2->Width  = 16;
       bmp2->Height = 16;
       bmp->LoadFromFile(ExtractFileDir(Application->ExeName)+"/mime-icons/folder.png");
       bmp2->Canvas->StretchDraw(ARect, bmp);
       IL->Add(bmp2, NULL);
       bmp->LoadFromFile(ExtractFileDir(Application->ExeName)+"/mime-icons/folder_open.png");
       bmp2->Canvas->StretchDraw(ARect, bmp);
       IL->Add(bmp2, NULL);
    }
    //---------------------------------------------------------------------------
    void __fastcall TMainFrm::Button1Click(TObject *Sender)
    {
    int Index;
    TRect ARect;
       bmp->LoadFromFile(ExtractFileDir(Application->ExeName)+"/mime-icons/image_bmp.png");
       ARect = Rect(0, 0, 16, 16);
       bmp2->Canvas->StretchDraw(ARect, bmp);
       Index = IL->Add(bmp2, NULL);
    

    am image_bmp.png kanns auch nich liegen, hab das schon beliebig vertauscht...



  • Habe das jetzt sowohl unter Windows/VCL als auch unter Linux/CLX getestet und kann das Problem nicht nachvollziehen.
    Stammt dein Code wirklich aus einem Minimalprojekt?


Anmelden zum Antworten