11. december 2001 - 00:20Der er
3 kommentarer og 1 løsning
DLL-Hvordan??
Hej!
Er der nogen her der ved hvordan man får adgang til sine tabeller i sin interbase fra en dll fil?? Jeg har et datamodul som jeg inckludere i mit dll projekt på samme måde som jeg gør det i min applikation som kalder min dll fil.
Jeg kan få adgang til mine tabeller i min applikation,men ikke fra min dll fil.
Så hvis der findes en som ved noget om dll filer, vil jeg blive glad for et svar..
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
Hvordan \"kan ikke få adgang\" ??? Når du laver en applikation, laves automatisk en masse opstartstjavs, som bl.a. opretter dit datamodul og åbner de filer du evt. har haft åbne på design tidspunktet.
I en aller ander .cpp i dit DLL skal der stå \"TDataModul1 DataModul1;\" eller hvad du nu har kaldt det, for at modulet overhovedet er instansieret, og dermed kan bruges. Du kan evt. i din DLL checke at det er sket, ved simpelthen at checke værdien af DataModul1:
if (DataModul1 == null) DataModul1 = new TDataModul1(this);
Prøv evt. at indsætte et breakpoint i constructoren til datamodulet, for at se om den overhovedet udføres.
DataMod->Query1->SQL->Add(\"select navn,adresse,postnr from Passager where bilnr = :BIL \"); DataMod->Query1->ParamByName(\"BIL\")->AsString=bil.c_str();
Yeps, men det er fordi at Datamodulet er initialiseret i din WinMain (se .cpp\'en med samme navn som dit projekt.)
Hvis du skal have d.o. til at virke i en DLL, skal du tilføje følgende:
void MyClass::getPassager(HWND hWnd, string bil) { // Instancier datamodul, hvis det ikke allerede er gjort. if (DataMod == NULL) DataMod = new TDataMod(NULL);
// Så kan vi bruge data-modulet. DataMod->LufthavnDB->Open(); : osv. }
Idet jeg antager at DataMod .cpp har en erklæring af DataMod variablen i toppen, hvorved den er GLOBAL indenfor DLL\'en. Normalt vil man jo lave new med (this) som pointer, men DLL\'en kender jo ikke hovedprogrammets form i denne her situation, så enten skal du lade den være \"stand-alone\" (via NULL) eller også skal du overføre pointeren til formen som parameter i DLL\'kaldet:
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.