Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Modificar variables de una aplicación desde una DLL (https://www.clubdelphi.com/foros/showthread.php?t=42702)

Albano 20-04-2007 02:40:33

Modificar variables de una aplicación desde una DLL
 
Hola a todos, tengan un buen día.
Tengo el siguiente problema:
Desarrollé una aplicación en la que puse una función que utiliza dos variables globales de la misma aplicación, pero ahora quiero usar esta función en otras aplicaciones, entonces lo que estoy haciendo es ponerla en una DLL, pero no puedo modificar estas dos variables, las modifico, pero no estoy mandando el valor modificado a la aplicación, solo se modifica en la DLL. Cómo puedo hacer esto?
Estas variables que quiero modificar no las tenía dentro de los parámetros, porque eran globales y simplemente tomaba el valor que tenía en ese momento en la aplicación. Para que la función trabaje, tuve que incluir estas variables en los parametros de la función y mandar los valores cada vez que utilizo la función, pero ahora el problema es que no se modifican en mi aplicación.
Espero haberme explicado correctamente, se me hace un poco complicado lo que quiero.
Gracias de antemano, Dios los bendiga.

basti 20-04-2007 02:56:18

No dices que tipo de variable es, dependiendo del tipo se haría de una manera u otra, es distinto si es un integer, un string o un objeto.

Albano 20-04-2007 20:22:10

Entonces es posible? :D
Son de tipo integer las dos...

seoane 20-04-2007 20:39:17

¿Como estas pasando el parámetro? por valor o por referencia. Si lo estas haciendo por referencia no debería de haber ningún problema.

Tu función debería ser algo así:
Código Delphi [-]
function Tufuncion(var parametro1: integer; var parametro2: integer): integer;

Albano 20-04-2007 21:27:08

Aqui esta el código, asi lo tengo en mi DLL...
Código Delphi [-]
//Esta función recibe la tecla presionada y el texto escrito en un edit y verifica
//que lo que se esta tratando de escribir sea valido para un valor numerico con
//dos decimales
Function EditNumerico(Cadena: string; Tecla: char; Punto: boolean; decimales: integer): boolean; stdcall;
begin
  if (length(cadena) = 0) and (tecla = #8) then result := false
  else
  begin
    if not (tecla in ['0'..'9', '.', #8]) then result := false
    else
    begin
      if (tecla = '.') and (punto = true) then result := false
      else
      begin
        if not(tecla = #8) and (decimales = 2) then result := false
        else
        begin
          result := true;
          if (tecla = #8) and (cadena[length(cadena)] = '.') then punto := false;
          if (tecla = #8) and (decimales > 0) then dec(decimales);
        end;
      end;
    end;
  end;
end;
Me marca lo siguiente:
Cita:

[Hint] cadenas.dpr(258): H2077 Value assigned to 'decimales' never used
[Hint] cadenas.dpr(257): H2077 Value assigned to 'Punto' never used

roman 20-04-2007 21:37:19

Y, ¿cuáles son los valores que quieres modificar? No veo ningún var, como te indicó seoane. Y esos hints no creo que se deban al código que aquí pones puesto que no se ve ninguna asignación a esas variables.

// Saludos

Albano 20-04-2007 21:53:45

Código Delphi [-]
          if (tecla = #8) and (cadena[length(cadena)] = '.') then punto := false;
          if (tecla = #8) and (decimales > 0) then dec(decimales);
Ahi estan las asignaciones.
Entonces
1.- ¿al ponerle var ya es como utilizar las variables que tengo en mi aplicación?
2.- ¿en ese momento ya se modifican tambien las variables en la aplicacion no solo en la DLL?

Ah, una variable es boolean y la otra integer, como podrán ver ;).

roman 20-04-2007 21:59:43

Cita:

Empezado por Albano
Ahi estan las asignaciones

Ya, ya. Se ve que de compilador me muero de hambre :D

Pues sí, al no haber var, lo que asignas a esas variables se queda en el procedimiento y no se usa para nada, de ahí el hint.

Cuando usas var en el parámetro, el valor que le asignes dentro del procedimiento, se preserva al término de este. Entonces, al usar

Código Delphi [-]
EditNumerico(Cadena, Tecla, Punto, decimales);

Siendo Cadena y Punto las variables globales declaradas en tu aplicación, el valor debe reflejarse, siempre y cuando uses var.

// Saludos

Albano 20-04-2007 22:11:32

Cita:

Empezado por roman
Ya, ya. Se ve que de compilador me muero de hambre

jajaja...
Listo!!! ya no me marca los hints, supongo que ya funciona como queria, voy a estar haciendo pruebas, si me surge otra duda, por aqui preguntaré ;)
Muchas gracias.


La franja horaria es GMT +2. Ahora son las 02:45:00.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi