Form zu MDI-Child



  • Hallo,

    habe vollgenes problem: Wen ich aus den MainForm Daten an MDIChild sende geht das mit

    ((TMDIChild*)MDIChildren[i])->RichEdit1->...
    

    Ich habe aber in der MainForm ein neue Form gemacht da nimmt der Compiler zwar den Befehl an, aber wen ich das Programm laufen lasse kommt da eine Fehlermeldung.

    Im Projekt xxxx ist eine Exception der Klasse yyyyy aufgetreten. Meldung: 
    'zzzzzz'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start 
    fortsetzen.
    

    Ich hoffe mir kann einer Helfen

    MfG Rave



  • Hallo

    Zunächst einmal solltest du nicht mehr die veralteten C-style Casts verwenden, sondern die casts aus C++

    static_cast<TMDIChild*>(MDIChildren)->RichEdit1->...
    

    Zu deinem konkreten Problem können wir hier ohne die genaue Beschreibung der Exception (ausgerechnet Klasse und Beschreibung der Beschreibung hast du ja im Post weggelassen) und dem relevanten Quellcode nichts weiter sagen. Benutz den Debugger um den Auslöser der Exception zu finden.

    bis bald
    akari



  • Danke werde ich machen mit dem C++ casts

    Mit dem Debugger kenne ich mich noch nicht so aus.

    Ich habe im MainForm den Code

    Form2->ShowModal();
    

    Und in Form2 wollte ich das ich auf ein MDIChild ein Text senden.

    static_cast<TMDIChild*>(MDIChildren[0])->RichEdit1->SelText = Edit1->Text;
    

    Der Fehler ist

    Benachrichtigung über Debugger-Exception
    ---------------------------
    Im Projekt Editor.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 0040C0EB in Modul 'Editor.exe'. Lesen von Adresse 000002F0'.
    Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
    ---------------------------
    

    MfG Rave



  • Hallo

    Die Exception kommt weil du in einem ungültigen Speicherbereich arbeitest. In den meisten Fällen liegt es an einem Zeiger, der auf einen Speicherbereich zeigt, der entweder noch nicht mit der Adresse einer gültigen Instanz initialisiert wurde, oder der auf eine Adresse zeigt, wo vorher eine gültige Instanz lag, die aber bereits gelöscht und überschrieben wurde.
    Der von dir gezeigte Quellcode reicht für eine konkrete Antwort nicht aus, es gibt noch zu viele mögliche Fehlerursachen. Du kommst um die Benutzung des Debuggers und die Einarbeitung in die Grundlagen der Speicherverwaltung und Lebensdauer von Instanzen in C++ nicht drumherum.

    bis bald
    akari


Anmelden zum Antworten