PDA

Ver la Versión Completa : external procedure


arantzal
15-12-2004, 10:07:43
Buenas,

sabe alguien si hay algún problema a la hora de pasar strings como parámetros de un procedimiento externo?.

Tengo lo siguiente:

procedure GestionarUsuarios(IdUsuario: integer; ColorFondo: TColor; Cadena1, Cadena2: string; ModoAdmin: Boolean); external 'Gestionar.dll' ;

.Al llamarle le paso 2 strings, pero me los corta y solo se queda con el primer char.

Alguna idea?.....
Saluditttooossss.

Héctor Randolph
15-12-2004, 10:55:15
Hola arantzal!

Efectivamente existe un problema cuando pasas algún string como parámetro a un procedimiento externo.

Lo que sucede es que Delphi maneja la memoria compartida a través de una biblioteca llamada BORLNDMM.DLL, por esta razón cuando pasas Strings como parámetros debes incluir la unidad ShareMem y además debe ser la primera unidad en la cláusula Uses de cualquier proyecto o unidad que haga uso del procedimiento externo.

Si prefieres evitar el uso de la librería BORLNDMM.DLL, entonces debes envíar como parámetros PChar o ShortString.


Espero que te sea útil

Hasta pronto.

arantzal
15-12-2004, 11:39:26
Muxas gracias Hector,
pero he probado con el tipo ShortString y me da la excepción: Can not marshall parameter #4, que es justo el parámetro de ese tipo.
Alguna idea de porqué me da eso?.

Gracias de nuevo.
Saludos.

arantzal
16-12-2004, 11:41:36
Buenas,

ya lo he conseguido cambiando el tipo string por variant.

Saludos.