Newsgroup: it.comp.lang.delphi
Titolo: Utilizzo di DLL di terze parti

Ho la necessità di utilizzare una DLL prodotta da una società USA.
Ho costruito un piccolo applicativo, che esegue la chiamata alla
funzione della DLL che mi serve, con tutti i parametri (apparentemente)
a posto.
La DLL però mi risponde con un codice di errore che significa "bad
parameter".
Lo stesso programma costruito con Visual Basic invece funziona
perfettamente (non sono certo, ma immagino che la DLL stessa sia stata
scritta in Visual Basic).
Quello che posso pensare è che ci siano differenze tra Delphi e VB nel
passaggio di parametri.
Qualche suggerimento?
Grazie a tutti.
Leo.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

c'è un post su questo argomento di oggi stesso.
Bye
A.

 Lo stesso programma costruito con Visual Basic invece funziona
Assicurati di usare la convenzione di passaggio dei parametri standard.
Usa "stdcall" nel prototipo della funzione interfacciata da Delphi.

 Usa "stdcall" nel prototipo della funzione interfacciata da Delphi.
Ma con stdcall non si indicano le funzioni di callback?
--
- Carlo -
cbertu81(at)libero(dot)it

> Ma con stdcall non si indicano le funzioni di callback?
vb usa stcall .....si callback


Non è proprio essato con stdcall si indica il metodo (standard di
windows indi C) di passare i paramentri il delphi di defout usa un
altro metodo (chedo che il C usa la memoria e il Pascal (e delphi
eredita) usa i registri ma non ne sono sicuro)
Le callback visto che devono essere chimate da Windows (programma C)
devono avere il passagio di paramentri di stile C tutto qui...
Il Razziatore,
The Only Good Windows is an uninstalled Windows
-----------------------------------------------
E-MAILs : IlRazziat...@NOSPAMnetscape.net
WEB     : 
http://www.razziatore.dns2go.com/
ICQ     : 67552596

 eredita) usa i registri ma non ne sono sicuro)
veramente usano lo stack ...anche cdecl  (c)
differiscono nel fatto che le funzioni cdecl non puliscono  lo stack :))
ciao

>Ma con stdcall non si indicano le funzioni di callback?
Con "stdcall" si indica la convenzione di chiamata standard di Windows, che 
prevede il passaggio dei parametri da destra a sinistra e l'uso dello 
stack, al posto dei registri.  Le callback sono funzioni che devono essere 
interfacciate in modo standard.
Quindi, per risponderti, direi "si", ma aggiungerei un "e allora ?".
-------------------------------
Message Posted by  <dedGateway>
http://www.dedonline.com/forump


Piccola precisone... sono andato sul help a rivedere le cose...
allora... la questione dei registri era vera ma è una invenzione del
delphi :D il pascal usava la memoria e per retrocompatibilita e stata
appunto l'asciata una direttiva
cmq una importante differenza apparte quella dei registri  è che il C
passa i parametri in modo inverso rispetto al pascal e al delphi
visto che ci siamo diciamo anche che le vecchie diretive da chi viene
da programmazione 16Bit (Far, Near, Export (? e le DLL non exportano
+?)) non hanno + senso e vengono mantenute (come al solito) solo per
compatibilita
tabella riasuntiva :
register	Left-to-right
pascal	Left-to-right <-- Mantenuto per compatibilita
cdecl	Right-to-left
stdcall	Right-to-left
safecall	Right-to-left
Il passagio dei parametri passando per i registri è il + efficente
(indi e sconsigliato usare gli altri se non si è costretti) il cdecl è
usato quando si chiamano delle DLL scritte in C/C++. stdcall e
safecall sono usati per chiamare le API di windows (e anche altre).
La differenza tra cdecl è le alte usate con le API è che la cdecl
elimina i paramentri dallo stack quando ritorna


elimina i paramentri dallo stack quando ritorna
Il contrario: cdecl non lo fa, le altre si'.
