Access violation



  • zu hülf ... oder erstmal nabend 🙂

    hab jetzt die letzten stunden eine kleine klasse gebastelt um mit fmod zu arbeiten und eben jene klasse in einer konsolenanweudng getestet.
    nun wollte ich sie in einer vcl-anwendung einbetten. die anwendung wird perfekt kompiliert und gelinkt, jedoch sobald sie ausgeführt wird geht das nette "cpu"-fenster mit einer access violation auf (siehe link), obwohl der aufruf der klasse in dem formular mit dem in der konsolenanwendung identisch ist.

    ich hab jetzt mal gar keine idee wonach ich suchen muss oder woran es liegen könnte ... hilfe ?

    http://howlingwolf.de/narf.jpg



  • Wie wird die "Klasse" instanziiert?
    Dynamisch? - ist die scon mit new erzeugt?
    Muss in der Klasse etwas initialisiert werden? - Is das schon gemacht?



  • sry.

    so lief das ganze in der konsole:

    int main(int argc, char* argv[])
    {
        howlingSound *bla;
        bla = new howlingSound ();
        AnsiString File = "03-Tragic Hero (Blind Vision Remix).mp3";
    
        cout << "Version: " << bla->getVersion() << endl;
        bla->play(File.c_str());
        cout << bla->getVolume() << endl;
    
        cout << bla->isPlaying() << endl;
    
        cout << "Pos: " << bla->getPosition() << endl;
        for (int i = 0; i < 1000000000; i++);
        cout << "Pos: " << bla->getPosition() << endl;
    
        getch ();
        return 0;
    }
    

    und dies reicht bereits aus damit die violation kommt, für mich ein und der selbe code mit der selben klasse 😕
    Edit: beim erzeugen mit new springt er raus

    __fastcall TfrmHowlingPlayer::TfrmHowlingPlayer(TComponent* Owner)
        : TForm(Owner)
    {
        howlingSound *bla;
        bla = new howlingSound ();
    }
    

    und falls damit einer etwas anfangen kann, dies steht in dem cpufenster sobald es aufspringt
    http://howlingwolf.de/narf2.jpg



  • Was ist, wenn Du das in OnActivate machst, nicht im Konstruktor?



  • genau das selbe, ich habs auch schon im onclick eines buttons versucht.



  • muss aus hoffnung einmal schieben *schieb*



  • Scroll mal im CPU-Fenster hoch... das ist die Mixed-View darstellung C + Assembler... irgendwo findest du die Anweisung bei der das Ganze stehengeblieben ist. Alternativ empfehle ich dir das Fenster zuzuklicken und mit dem Debugger durchzusteppen. Ist das auch erfolglos, bleibt dir nur das Setzen eines Breakpoints und das durchsteppen mit dem Debugger um die Zeiel zu identifizieren. Alles andere scheint mir sinnlose Raterei zu sein...



  • genial, danke junix, wusste gar nicht das in dem cpu-fenster noch was lesbares steht, habs jetzt :).


Anmelden zum Antworten