/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Bruge en DLL
Fra : Michael Vilhelmsen


Dato : 15-08-05 14:11

Hej

Jeg har fra en af vores leverandører fået en DLL fil, som stiller nogle funktioner tilrådighed.

Men hvordan får jeg mulighed for, at kalde disse i Delphi 5 Ent. ?
Eller hvor finder jeg informationer om dette ?

Michael

--

Best Regards / Venlig hilsen
Michael Vilhelmsen
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com



 
 
Uffe Kousgaard (15-08-2005)
Kommentar
Fra : Uffe Kousgaard


Dato : 15-08-05 15:06

"Michael Vilhelmsen"
<Michael.Vilhelmsen.PLEASEREMOVE@Microcom.PLEASEREMOVE.Dk> wrote in message
news:mn.7b8e7d581a7bb669.11460@Microcom.PLEASEREMOVE.Dk...
> Hej
>
> Jeg har fra en af vores leverandører fået en DLL fil, som stiller nogle
> funktioner tilrådighed.

Du skal bede om en beskrivelse af DLL'en fra leverandøren. Sandsynligvis en
såkaldt header fil til C. Prøv at kalde "tdump din.dll" for at se, hvilke
funktioner den indeholder. Er der kun 2 med navne á la DLLregister
(omtrent), så er der tale om et active-x og ikke en klassisk DLL med
eksporterede funktioner.

hilsen
Uffe



Michael Vilhelmsen (16-08-2005)
Kommentar
Fra : Michael Vilhelmsen


Dato : 16-08-05 07:48

Uffe Kousgaard expressed precisely :
> "Michael Vilhelmsen" <Michael.Vilhelmsen.PLEASEREMOVE@Microcom.PLEASEREMOVE.Dk> wrote in message news:mn.7b8e7d581a7bb669.11460@Microcom.PLEASEREMOVE.Dk...
>> Hej
>>
>> Jeg har fra en af vores leverandører fået en DLL fil, som stiller nogle funktioner tilrådighed.
>
> Du skal bede om en beskrivelse af DLL'en fra leverandøren. Sandsynligvis en såkaldt header fil til C. Prøv at kalde "tdump din.dll" for at se, hvilke funktioner den indeholder. Er der kun 2 med
> navne á la DLLregister (omtrent), så er der tale om et active-x og ikke en klassisk DLL med eksporterede funktioner.


Der er mere end 2....

Fandt ud af, at jeg kan skrive:

function flxConnect (Int : Integer) : Integer; External 'flxdrv.dll';
function flxDisconnect () : Integer; External 'flxdrv.dll';
function flxOpen() : Integer; External 'flxdrv.dll';


under interface delen.

Og det ser ud til at virke.

Er det så ikke korrekt, tror du ?

Michael

--

Best Regards / Venlig hilsen
Michael Vilhelmsen
==========
Best Regards / Venlig hilsen

Michael Vilhelmsen



Michael Vilhelmsen (16-08-2005)
Kommentar
Fra : Michael Vilhelmsen


Dato : 16-08-05 13:48

on 15-08-2005, Uffe Kousgaard supposed :
> "Michael Vilhelmsen" <Michael.Vilhelmsen.PLEASEREMOVE@Microcom.PLEASEREMOVE.Dk> wrote in message news:mn.7b8e7d581a7bb669.11460@Microcom.PLEASEREMOVE.Dk...
>> Hej
>>
>> Jeg har fra en af vores leverandører fået en DLL fil, som stiller nogle funktioner tilrådighed.
>
> Du skal bede om en beskrivelse af DLL'en fra leverandøren. Sandsynligvis en såkaldt header fil til C. Prøv at kalde "tdump din.dll" for at se, hvilke funktioner den indeholder. Er der kun 2 med
> navne á la DLLregister (omtrent), så er der tale om et active-x og ikke en klassisk DLL med eksporterede funktioner.
>
> hilsen
> Uffe

Jeg har en header fil.
Kan jeg indlæse den i Delphi ?

Michael

--

Best Regards / Venlig hilsen
Michael Vilhelmsen
==========
Best Regards / Venlig hilsen

Michael Vilhelmsen



Christian Iversen (16-08-2005)
Kommentar
Fra : Christian Iversen


Dato : 16-08-05 17:10

Michael Vilhelmsen wrote:

> on 15-08-2005, Uffe Kousgaard supposed :
>> "Michael Vilhelmsen"
>> <Michael.Vilhelmsen.PLEASEREMOVE@Microcom.PLEASEREMOVE.Dk> wrote in
>> message news:mn.7b8e7d581a7bb669.11460@Microcom.PLEASEREMOVE.Dk...
>>> Hej
>>>
>>> Jeg har fra en af vores leverandører fået en DLL fil, som stiller nogle
>>> funktioner tilrådighed.
>>
>> Du skal bede om en beskrivelse af DLL'en fra leverandøren. Sandsynligvis
>> en såkaldt header fil til C. Prøv at kalde "tdump din.dll" for at se,
>> hvilke funktioner den indeholder. Er der kun 2 med navne á la DLLregister
>> (omtrent), så er der tale om et active-x og ikke en klassisk DLL med
>> eksporterede funktioner.
>>
>> hilsen
>> Uffe
>
> Jeg har en header fil.
> Kan jeg indlæse den i Delphi ?

Kig efter programmet "h2pas" fra FreePascal. Det kan konvertere det meste af
header-filerne, så skal du bare lave de sidste tilretninger i hånden.

--
M.V.H
Christian Iversen

Michael Vilhelmsen (17-08-2005)
Kommentar
Fra : Michael Vilhelmsen


Dato : 17-08-05 14:47

>
> Kig efter programmet "h2pas" fra FreePascal. Det kan konvertere det meste af
> header-filerne, så skal du bare lave de sidste tilretninger i hånden.


OK Jeg fandt programmet og har prøvet at køre det.
Det giver mig da et ouput jeg kan arbejde videre med.

MEN - jeg er stødt på et andet problem.

I Outputtet er der dannet følgende:


Type
Pdword = ^dword;

FLX_ADMIN_FUNCTION = (TDummy,ADMIN_ENDOFDAY,ADMIN_ENDOFDAYLOG,
ADMIN_REPORT_TERMINALREPORT,ADMIN_REPORT_TOTALS,
ADMIN_REPORT_LOG,ADMIN_REPORT_OLDLOG,
ADMIN_LASTRECEIPT,ADMIN_UNLOCK_RECEIPT,
ADMIN_CLOCKSYNCPBS,ADMIN_CLOCKSYNCPOINT,
ADMIN_SENDLOG,ADMIN_CLEARDATASTORE,
ADMIN_DOWNLOADPROGRAM,ADMIN_DOWNLOADPARAM,
ADMIN_DOWNLOADPAN,ADMIN_DOWNLOADTLCMDB,
ADMIN_RESTORETLCMDB,ADMIN_CONTRASTUP,
ADMIN_CONTRASTDOWN,ADMIN_RESTARTTERMINAL,
ADMIN_EJECTCARD,ADMIN_MSC,ADMIN_MAX
);

(Dummy er indsat af mig, da ADMIN_ENDOFDAY i header filen har nummer 1. Jeg mener, at Delphi starter med 0).


function flxAdministration(func:FLX_ADMIN_FUNCTION; var error: PDword) : Integer; External 'flxdrv.dll';


Når jeg så vil kalde flxAdministration gør jeg følgende:

procedure TfrmMain.Terminalrapport1Click(Sender: TObject);
var
err : PDWord;
begin
ReturnResult := flxAdministration(ADMIN_REPORT_TERMINALREPORT,Err);
end;


Men det giver mig en fejl. Denne

Access Violation at adress 10005681 in module 'flxdrv.dll'. Write of adress 00485CFE.


Umiddelbart vil jeg tro, at det har noget at gøre med PDWord typen. Men jeg aner det ikke.

Siger det jer noget ?

Michael



--

Best Regards / Venlig hilsen
Michael Vilhelmsen
==========
Best Regards / Venlig hilsen

Michael Vilhelmsen



Poul S. (17-08-2005)
Kommentar
Fra : Poul S.


Dato : 17-08-05 16:16

"Michael Vilhelmsen"
<Michael.Vilhelmsen.PLEASEREMOVE@Microcom.PLEASEREMOVE.Dk> skrev i en
meddelelse news:mn.8bb37d58e8314637.11460@Microcom.PLEASEREMOVE.Dk...

> Når jeg så vil kalde flxAdministration gør jeg følgende:
> procedure TfrmMain.Terminalrapport1Click(Sender: TObject);
> var
> err : PDWord;
> begin
> ReturnResult := flxAdministration(ADMIN_REPORT_TERMINALREPORT,Err);
> end;

> Men det giver mig en fejl. Denne

> Access Violation at adress 10005681 in module 'flxdrv.dll'. Write of
> adress 00485CFE.

> Umiddelbart vil jeg tro, at det har noget at gøre med PDWord typen. Men
> jeg aner det ikke.

> Siger det jer noget ?
-------------------------------


Lige som Uffe har skrevet til dig i en anden tråd, mener jeg at du SKAL
fortælle kompileren hvilken type kald er din dll import. Prøv at definere
funktionen således:

function flxAdministration(func:FLX_ADMIN_FUNCTION; var error: PDword) :
Integer; External 'flxdrv.dll'; stdcall;


Du kan læse mere om det ved at søge på "calling conventions" i Hjælpen til
Delphi.

--
Mvh. Poul



Stig Johansen (18-08-2005)
Kommentar
Fra : Stig Johansen


Dato : 18-08-05 04:34

Poul S. wrote:

> Lige som Uffe har skrevet til dig i en anden tråd, mener jeg at du SKAL
> fortælle kompileren hvilken type kald er din dll import. Prøv at definere
> funktionen således:
>
> function flxAdministration(func:FLX_ADMIN_FUNCTION; var error: PDword) :
> Integer; External 'flxdrv.dll'; stdcall;

Derudover skriver OP:
....
Type
    Pdword      = ^dword;
....

Ved kaldet er variablen error ikke allokeret, hvilket bør give en AV.

Endvidere kan der være tale om dobbeltkonfekt ved at benytte en pointer i
kombination med 'var' i funktionskaldet.

--
Med venlig hilsen
Stig Johansen

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste