Delphi - Variable por referencia

 
Vista:

Variable por referencia

Publicado por llo_mysm4 (2 intervenciones) el 26/06/2006 10:48:37
Hola!
tengo una aplicacion en visual basic, y estoy intentando pasarla a Delphi.
mi problema es que tengo una variable que se declara como byref, es decir, que se declara por referencia y no por valor.
como podria hacer esto en delphi?????
Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Variable por referencia

Publicado por Edgar Rodriguez (172 intervenciones) el 26/06/2006 22:12:29
Qué buena decisión que te pases a Delphi, te felicito, bueno, siendo así te ayudo con más ganas. Las variables por referencia se manejan aquí gracias a la palatra reservada var dentro de los parámetros de esta forma.
procedure prueba(var param1:Integer);

cabe anotar que existe también const que se puede reemplazar en var pero no es por referencia, mas es una optimización del compilador para que maneje menos memoria y menos código. Claro que no se modifica por no ser de referencia.

Si lo que nede necesitas es manejar punteros es otra cosa. Mándame otra pregunta si es que necesitas punteros.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Variable por referencia

Publicado por Llomysm4 (2 intervenciones) el 27/06/2006 11:28:38
Gracias por responder.
mira, te explico. yo tengo esta funcion en visual (intento leer una tarjeta chip):

Public Declare Function SCardEstablishContext Lib "WINSCARD" _
(ByVal dwScope As Long, _
ByVal pvReserved1 As Long, _
ByVal pvReserved2 As Long, _
ByRef phContext As Long) As Long

yo en Delphi, la pongo así:

function SCardEstablishContext(dwScope:longlong;pvReserved1:longlong;pvReserverd2:longlong;var phContext:longlong):longlong; stdcall external 'winscard.dll';

La variable que necesito es phContext.

Tal como me dijiste la puse con "var" delante, pero la Función la carga bien pero phContext no me devuelve nada, cosa que en visual si hace.

Gracias de Antemano!
Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Variable por referencia

Publicado por Edgar Rodriguez (172 intervenciones) el 28/06/2006 06:31:15
Internamente Visual Basic hace muchas cosas por el programador de aplicaciones que le hacen la vida más fácil, pero hay que recordar que siempre será bajo en rendimiento, por tanto, lenguajes como Delphi, C++ que son de mayor rendimiento deberás especificarle más al compilador de lo que pretendes hacer. Cualquiera que venga del mundo de VB pensará "pero bueno, para qué tanto complique" pero en un momento dado este pensamiento es de quienes nacieron montando en coche, y luego lo mandan a montar bici, cuando tú has montado bici desde el principio, sabes que es más saludable para ti, por tanto son puntos de vista diferentes y claro, el libre albedrío se presenta aquí. Pero bueno, a tu función le falta cosas como CDECL, porque es probable que la función haya sido hecha con C++, por tanto CDECL significa C Declaration. Para resumir es un modelo de memoria, prueba por si las moscas esto,

function SCardEstablishContext(dwScope:longint; pvReserved1:longint; pvReserverd2:longint; var phContext:longlong):longint; cdecl; far; external 'winscard.dll';

la palabra far quiere decir que se llame el modelo fuera de la pila.

Creo que por ahora eso es todo, no he probado lo que dices porque no tengo la dll.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar