Probleme mit Datamodulen



  • Hallo zusammen 🙂 Ich muss als erstes gestehen, dass ich noch fast ein blutiger Anfänger bin was C++ anlangt und hoffe dass mir hier jemand mit seinem Expertenrat helfen kann.

    Zum Problem:

    Ich bin dabei im Cbuilder(V6) ein Programm zu schreiben, das momentan aus zwei Komponenten besteht. 1. Das Hauptprogramm (haupt.cpp) und einer DLL (dbc.dll) .
    Die DLL ist bereits in das Hauptprogramm eingebunden und ich kann auf sie zugreifen. Die DLL enthält ein Datamodul in dem ein ADOConnection- und ein ADOQuery-Element platziert ist.
    Also, für die DLL gibt es eine Klasse dbc.cpp und für das Datamodule (Mdmod) eine dmod.cpp. In der dmod.cpp möchte ich nun über die Methode GreifZu auf die ADOConnection zugreifen. Das habe ich so gemacht:

    [code]
    bool GreifZu(char* Benutzername)
    {
    Mdmod->ADOConnection->Connected = true;
    Mdmod->ADOConnection->ConnectionString =...
    return true;
    }
    [/code]
    

    In der dbc.cpp rufe eich dann die Methode GreifZu auf und gebe das Ergebnis zurück:

    [code]
    #include "dmod.h"
    
    extern "C" __declspec (dllexport) bool MySQLconnect(char* Benutzername)
    {
    return GreifZu(Benutzername, Passwort);
    }
    

    [/code]

    Wenn ich nun über das Hauptprogramm auf die Methode MySQLconnect zugreife erhalte ich einen Fehler:

    "Im Projekt haupt.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 010F195B Lesen von Adresse 00000058B'. Prozess wurde angehalten. ..."

    Im Quellcode-Explorer ist die Zeile:

    [code]
    Mdmod->ADOConnection->Connected = true; 
    [/code]
    

    als fehlerhaft markiert. Wo liegt blos der Fehler??? Kann mir von Euch jemand weiterhelfen? Wäre super! Evtl. so erklären, dass auch ich es verstehe *gg*

    Viele Grüße, Tobi


  • Mod

    Hallo

    du meinst doch wohl

    bool GreifZu(char* Benutzername)
    {
    Mdmod->ADOConnection->ConnectionString =...
    Mdmod->ADOConnection->Connected = true;
    return true;
    }
    

    Mfg
    Klaus



  • Hallo

    die Zugriffsverletzung deutet eher darauf hin, das für Mdmod keine gültige Instanz vorhanden ist.

    bis bald
    akari



  • @Klaus: Ja stimmt, habe in meinem Post die Reihenfolge verwechselt.

    @akari: Ja das kann sein, habe in einem Delphi Forum einen ähnlichen Artikel gefunden. Kannst Du mir evtl. nen Tip geben, wie ich am Besten eine gültige Instanz erzeuge?

    Viele Grüße,

    Tobi



  • Hallo

    erstelle in der DLL noch zwei einfache Funktionen, die eine machts nichts weiter als die Instanz mit new zu erstellen und die andere diese wieder zu löschen.
    Diese beiden Funktionen rufst du dann am Anfang bzw. am Ende deines Programms auf.

    bis bald
    akari


Anmelden zum Antworten