Avatar billede virtualfriend Nybegynder
06. december 2001 - 00:46 Der er 1 kommentar og
1 løsning

DLL fejl

Hej Venner!

Jeg sidder og nosser med noget statisk dll. problemet er at når jeg har kaldt min dll fil, og fået min messageBox frem i den application jeg kalder min dll fil fra crasher det og en eller anden hukommelses fejl opstår.
Den skriver i fejlmeddelsen noget om en dellocator.

Jeg har koden her:


H fil.
  extern \"C\" void DLL_EXP SayHello(HWND);

        class DLL_EXP MyClass{
        public:
        MyClass (HWND hWnd);
     
        string getAdresse(){return adresse;}
        string getNavn(){return navn;}
        string getPostnr(){return postnr;}
        string getBy(){return by;}

        void setNavn(string na){navn=na;}
        void setPostnr(string po){postnr=po;}
        void setBy(string b){by=b;}
        void setAdresse(string ad){adresse=ad;}
        void setBilnr(string Bil){bilnr=Bil;}

        bool getPassager(string billet);

        private :
        string bilnr;
        string by;
        string adresse;
        string postnr;
        string navn;
        HWND hWnd;
        };

CPPfil.
#pragma argsuse
#include \"UnitDLL.h\"
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
        return 1;
}
//---------------------------------------------------------------------------

//Extern funktion;
void DLL_EXP SayHello(HWND hWnd)
{
MessageBox(hWnd,\"Hej Lars\",\"DLL MessageBox\",MB_OK | MB_ICONEXCLAMATION);
}

//Konstrukter
MyClass::MyClass(HWND hWnd)
{
hWnd=hWnd;
}


bool MyClass::getPassager(string bil)
{

  DataMod->Query1->Close();
  DataMod->Query1->SQL->Clear();

DataMod->Query1->SQL->Add(\"select navn,adresse,postnr \");
DataMod->Query1->SQL->Add(\"from Passager where bilnr = :BIL \");
DataMod->Query1->ParamByName(\"BIL\")->AsString=bil.c_str();

DataMod->Query1->Open();
DataMod->Query1->First();

if(DataMod->Query1->Eof)
return false;

navn=DataMod->Query1->FieldByName(\"navn\")->AsString.c_str();
adresse=DataMod->Query1->FieldByName(\"adresse\")->AsString.c_str();
postnr=DataMod->Query1->FieldByName(\"postnr\")->AsString.c_str();

return true;

}


Knappen i min application.

MyClass mm(Application->Handle);//Extern funktion
mm.setNavn(\"lars\");


Avatar billede kamikaze Nybegynder
07. december 2001 - 15:28 #1
Ved ikke om det er det, men der er da en fejl i constructoren:

//Konstrukter, rettet til
MyClass::MyClass(HWND hWnd)
{
this->hWnd=hWnd; // this->... er tilføjet
}
Avatar billede virtualfriend Nybegynder
08. december 2001 - 05:29 #2

Nej, det var ikke fejlen. fejlen var at handleren ikke var med som parameter i funktionen.
Således her: void MyClass::GetPassager(hWND,string bil)

Men jeg har fået en ny fejl. Jeg prøver at få adgang til mit databasemodul således her:

DataMod->Query->Close();

Her bryder den sammen og skriver access violetion og read adress FFFFFF.

Selv om jeg har inkluderet modulet i mit DLL-projekt.

Det fatter jeg tilgengæld ikke noget af:
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester