FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
stdcall? overload?
Hola estoy intentando hacer una dll en delphi pero lei por alli q usan estas 2 palabras(stdcall; overload al final de la funcion. Ademas que conflictos puede haber si declaro la variable C como string y pq char o pchar
Gracias |
#2
|
||||
|
||||
¿Y cuál es la pregunta?
Cuando el código compilado en Delphi, llama una función o procedimiento, en ese instante se va agregando a la pila de ese hilo de ejecución: El puntero de la siguiente instrucción después de la llamada a la función y el puntero a cada uno de los parámetros de izquierda a derecha exceptuando los tres primeros parámetros, que por optimización se guardan en registros, y la función es la encargada de quitarlos de la pila al retornar. Pero si necesitamos llamar a una función que no respete esquema, tenemos cinco convenios estándares de llamadas: register Convención por defecto de Delphi descrita anteriormente. pascal Original de los primeros compiladores, utiliza parámetros de izquierda a derecha y la rutina es la encargada de quitarlos. cdecl Parámetros de derecha a izquierda y es quien llama que tiene que quitar los parámetros de la pila. (Tipo ANSI C) stdcall Es el standard de windows, los parámetros se agregan de Izquierda a Derecha y la rutina los quita. safecall Los parámetros se agregan de Izquierda a Derecha y la rutina los quita. Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. Última edición por delphi.com.ar fecha: 30-10-2006 a las 17:35:25. |
#3
|
||||
|
||||
Me olvidaba: La directiva overload le indica al compilador que ese procedimiento puede ser sobrecargado, en pocas palabras: puede haber dos procedimientos homónimos con distinto juego de parámetros y es el compilador el que decide cual llamar según los parámetros que se especifiquen en la llamada.
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#4
|
|||
|
|||
Hola, gracias por responder.
-Una cosa, y como debe saber cual de estos standares usar??? -A que te refieres con parametros de derecha izq, disculpa mi ignorancia, recien estoy aprendiendo delphi. -Y cuales son los conflictos entre los tipos de datos, Ej. y hago una DLL en VisualBasic, funcionara en delphi?? Gracias nuevamente. |
#5
|
||||
|
||||
Cita:
Cita:
Hará lo siguiente (esta algo simplificado para que se entienda): en cambio, si laamamos a la función: Que tiene la directiva stdcall, la ejecución será (otra vez simplificando):
Cita:
Por ejemplo si le quieres pasar un entero a VB6, tienes que tener en cuenta que los enteros en VB6 son de 16 bits, por lo tanto el equivalente a un Smallint de Delphi. Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
problema con overload | santiago14 | Varios | 1 | 03-03-2005 14:35:00 |
Error "there is no overload version" | torito | Varios | 4 | 21-11-2003 20:54:00 |
Aclaracion de overload | tica | Varios | 3 | 06-11-2003 16:09:59 |
|