Avatar billede slowaterz Nybegynder
06. december 2002 - 05:07 Der er 4 kommentarer og
1 løsning

Dynamisk indlæsning af funktioner fra DLL

Jeg er ved at lave et program, der består af to hovedelementer : database adgang og USB kommunikation.

For at kunne bruge USB funktionaliteterne, skal der være en DLL fil installeret. Hvordan får jeg mit program til at kontrollere, at filen er der ?

Lige nu bruger jeg

function FuncName(paramList): returnType; stdcall; External DLLName name 'FuncName';

til at få fat på funktionerne i DLL'en. Men hvis filen ikke er installeret på maskinen, får man en fejlmelding med det samme, man starter programmet, at "Filen name.dll ikke findes".

Jeg har læst mig frem til "LoadLibrary" og "GetProcAddress", men har ikke fået det til at virke.

Den æder "@FuncName := GetProcAddress(DLLHandle, 'FuncName');", men når jeg kalder funktionen i min kode, får jeg følgende fejlmelding : "Too many actual parameters". Jeg har checket i DLL dokumentationen - der er det rigtige antal parametre. Og jeg har prøvet at erklære samme funktion med "stdcall; External" - der virkede det.
Avatar billede cms Nybegynder
06. december 2002 - 07:30 #1
var
  FuncName: procedure(Parameter1: Integer; Parameter2: PChar; Osv: Char);
  DLLHandle: THandle;
begin
  DLLHandle := LoadLibrary ...
  @FuncName := GetProcAddress ...

  FuncName(35, 'Hej', 'P');
end;
Avatar billede borrisholt Novice
06. december 2002 - 08:25 #2
Læs min artikel på www.Pythia.dk om dette emne :

http://www.pythia.dk/artikler/vis_artikel.php?id=24

Jens B
Avatar billede slowaterz Nybegynder
06. december 2002 - 08:41 #3
borrisholt >> Jeg har faktisk læst din artikel i min søgen efter løsning, men fandt ikke noget om parameter overførslen.

Du kunne vel ikke hjælpe mig med mit andet spørgsmål ? http://www.eksperten.dk/spm/291238
Avatar billede morten_s Nybegynder
06. december 2002 - 09:35 #4
Hej slowaterz

Jeg er særdeles interesseret i USB communication, da jeg selv skal igang med noget tilsvarende, hvad består din USB kommunikation i?
Avatar billede slowaterz Nybegynder
06. december 2002 - 10:05 #5
morten s >> vi har DLP-USB245M print (baseret på FTDI's FT245BM chip - www.ftdichip.com - der ligger både USB drivere og eksempel programmer på hjemmesiden) forbundet til et PIC16F877 (www.microchip.com) baseret kit, som opsamler temperatur målinger. Måleperioden og intervallet sætter vi i vores Delphi program og sender ned til kittet via USB. Måleresultater sender vi, selvfølgeligt også via USB, op til PC'en
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

IT-JOB

Riskpoint A/S (Riskpoint Solutions Limited)

Senior Developer

Capgemini Danmark A/S

AI/Data Engineer

Paychex Europe

Scrum Master