Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-04-2007
Avatar de Albano
Albano Albano is offline
Miembro
 
Registrado: oct 2004
Ubicación: Nogales, Sonora, Mexico
Posts: 422
Poder: 20
Albano Va por buen camino
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.
__________________
"Sé de tal manera y vive una vida tal, que si todos los hombres fueran como tú y vivieran como tú, nuestro mundo sería un paraíso terrenal"
Siempre hazlo con la ayuda de Dios

Última edición por Albano fecha: 20-04-2007 a las 02:43:19.
Responder Con Cita
  #2  
Antiguo 20-04-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
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.
Responder Con Cita
  #3  
Antiguo 20-04-2007
Avatar de Albano
Albano Albano is offline
Miembro
 
Registrado: oct 2004
Ubicación: Nogales, Sonora, Mexico
Posts: 422
Poder: 20
Albano Va por buen camino
Entonces es posible?
Son de tipo integer las dos...
__________________
"Sé de tal manera y vive una vida tal, que si todos los hombres fueran como tú y vivieran como tú, nuestro mundo sería un paraíso terrenal"
Siempre hazlo con la ayuda de Dios
Responder Con Cita
  #4  
Antiguo 20-04-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
¿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;
Responder Con Cita
  #5  
Antiguo 20-04-2007
Avatar de Albano
Albano Albano is offline
Miembro
 
Registrado: oct 2004
Ubicación: Nogales, Sonora, Mexico
Posts: 422
Poder: 20
Albano Va por buen camino
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
__________________
"Sé de tal manera y vive una vida tal, que si todos los hombres fueran como tú y vivieran como tú, nuestro mundo sería un paraíso terrenal"
Siempre hazlo con la ayuda de Dios
Responder Con Cita
  #6  
Antiguo 20-04-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #7  
Antiguo 20-04-2007
Avatar de Albano
Albano Albano is offline
Miembro
 
Registrado: oct 2004
Ubicación: Nogales, Sonora, Mexico
Posts: 422
Poder: 20
Albano Va por buen camino
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 .
__________________
"Sé de tal manera y vive una vida tal, que si todos los hombres fueran como tú y vivieran como tú, nuestro mundo sería un paraíso terrenal"
Siempre hazlo con la ayuda de Dios
Responder Con Cita
  #8  
Antiguo 20-04-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Albano
Ahi estan las asignaciones
Ya, ya. Se ve que de compilador me muero de hambre

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
Responder Con Cita
  #9  
Antiguo 20-04-2007
Avatar de Albano
Albano Albano is offline
Miembro
 
Registrado: oct 2004
Ubicación: Nogales, Sonora, Mexico
Posts: 422
Poder: 20
Albano Va por buen camino
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.
__________________
"Sé de tal manera y vive una vida tal, que si todos los hombres fueran como tú y vivieran como tú, nuestro mundo sería un paraíso terrenal"
Siempre hazlo con la ayuda de Dios
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Creacion de iconos con variables optenidas desde la instalacion guillem Varios 2 16-04-2007 20:45:42
Modificar DSN desde código Iuconlas Conexión con bases de datos 0 20-07-2006 10:57:10
Creacion de variables de session y de aplicacion Julio Hernandez .NET 2 06-06-2005 21:49:28
Modificar texto de un pdf desde delphi Masu Varios 1 04-06-2005 16:16:40
Modificar un dfm desde fuera del entorno wendigo Varios 5 07-05-2004 16:55:32


La franja horaria es GMT +2. Ahora son las 14:09:40.


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
Copyright 1996-2007 Club Delphi