Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-08-2005
Avatar de fryguy
fryguy fryguy is offline
Miembro
 
Registrado: mar 2004
Posts: 18
Poder: 0
fryguy Va por buen camino
Ejecución de cógido solo en IDE

Cuando estoy en un entorno de desarrollo uso la directiva {$DEFINE DEBUG} para
habilitar ciertas partes del código y en el momento de compilar elimino dicha línea
para que las partes especiales no sean incluídas.
No se si me explico, por las dudas incluyo un ejemplo.

Código:
 
unit ULogin;
{$DEFINE DEBUG}
 
...
 
procedure TfrmLogin.Label1Click(Sender: TObject);
begin
  leUsuario.Text := 'MiUsuario';
  leClave.Text := 'MiClave';
end;
 
procedure TfrmLogin.FormShow(Sender: TObject);
begin
  {$IFDEF DEBUG} 
  Label1.Visible := True;
  {$ELSE}
  Label1.Visible := False;
  {$ENDIF}
end;
Este código habilita o deshabilita una label con me completa los campos usuario
y contraseña al hacerle un clic.
En un entorno de desarrollo la directiva de compilación $DEFINE me habilita el
label y en el momento de pasar a producción elimino la directiva para que el label
no sea habilitado.
A pesar de que el usuario MiUsuario con clave MiClave no existen en el entorno
de producción no es deseable que por un olvido al compilar los usuarios finales
accedan a esta funcionalidad.
Mi pregunta es, ¿conocen alguna forma más flexible para que cierta porción de código
solo se encuentre disponible dentro del IDE y desaparezca una vez compilada la aplicación?

Gracias por todo.
__________________
"Fools are the only folks on earth who can absolutely count on getting what they deserve" S.K.
Responder Con Cita
  #2  
Antiguo 01-08-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.938
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Empezado por fryguy
¿conocen alguna forma más flexible para que cierta porción de código solo se encuentre disponible dentro del IDE y desaparezca una vez compilada la aplicación?
Te respondo con una pregunta: ¿Conoces alguna diferencia entre lo que compilas con el IDE y lo que compilas sin el?.... Mmmmmm

Primero quiero aclararte que no me parece una práctica muy prolija que digamos, igualmente se me ocurre, solución súper básica, que es hacer algo como:
Código Delphi [-]
program Miproyecto;

uses
  Forms,
  SysUtils,
  ....;

begin
  {$IFDEF DEBUG} 
  if ParamStr(0) <> 'j5r9jfd93ws03' then
    raise Exception.Create('Error bla, bla, bla....')
  {$ENDIF}

  Application.Initialize;
  Application.CreateForm(...);
  ...
  Application.Run;
end.

Y tener definido en el ini ese valor de parámetro, si te olvidas de compilarlo de otra forma, te darás cuenta en cuanto lo instales, por los mismos usuarios!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 01-08-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.114
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Se me ocurre que puedes definir la directiva "DEBUG" a nivel de proyecto: Project > Options > Conditionals. Y que por otro lado, en el archivo "dpr" escribieras algo así:

Código Delphi [-]
 begin
   {$IFDEF DEBUG}
     {$MESSAGE WARN 'Atención: La directiva DEBUG está definida'}
   {$ENDIF}
   Application.Initialize;
   Application.CreateForm(TForm1, Form1);
   Application.Run;
 end.
De ese modo, cuando compiles con la directiva "DEBUG" podrás ver un mensaje en donde aparecen los errores y advertencias al compilar, ya sabes. Sería cuestión, esto sí, de estar pendiente del mensaje a la hora de compilar.

Claro que no sé hasta qué punto lo que digo tiene que ver con lo que tú hubieras esperado por una respuesta más o menos razonable.

El caso es que el tema me parece interesante y no he podido dejar de meter baza, como suele decirse.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 01-08-2005
Avatar de fryguy
fryguy fryguy is offline
Miembro
 
Registrado: mar 2004
Posts: 18
Poder: 0
fryguy Va por buen camino
Me gusta la solución que ofrecés, por lo menos tengo una alerta si me olvido de sacar la porción de código.
De todas formas tiene que haber una forma de especificar que una porción de código solo puede ser usada en el IDE, existe para el uso de packages.
__________________
"Fools are the only folks on earth who can absolutely count on getting what they deserve" S.K.
Responder Con Cita
  #5  
Antiguo 01-08-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.938
Poder: 27
delphi.com.ar Va por buen camino
Si puedes averiguar si el IDE esta abierto, si la aplicación se esta debugueando.... pero en ambos casos, tu código de debug estará compilado de todos modos, y que este el IDE abierto o este en modo Debug, no es ninguna garantía de seguridad!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #6  
Antiguo 01-08-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.114
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por fryguy
tiene que haber una forma de especificar que una porción de código solo puede ser usada en el IDE, existe para el uso de packages.
¿Podrías explicar, aunque fuera un poco por encima, en qué consiste? En cuanto a:

Cita:
Empezado por fryguy
especificar que una porción de código solo puede ser usada en el IDE
Ahí creo que debe haber un error de concepto: cuando compilas un proyecto no estás compilando "para el IDE" ni "en el IDE", sino que estás compilando un proyecto... y nada más...

¿Cómo puede saber Delphi si el proyecto que acabas de compilar lo usarás para "debugear" o se lo enviarás a un usuario final? Yo creo que no puede saberlo y que para eso, entre otras cosas, tenemos las directivas de compilación.

Es cierto que puede olvidársete quitar o poner una directiva de compilación que haga que los resultados (el código compilado) no sean los esperados... pero, me temo que tendrás que estar pendiente de que no ocurra algo así: por ejemplo como te digo más arriba y/o siguiendo la idea de Federico.

"Debugear" (mientras se desarrolla) es más o menos habitual, pero, cuando uno compila un proyecto para su posterior distribución ha de estar pendiente de ciertas cosas y una de ellas puede ser justamente la del control de las directivas de compilación.

De todos modos podrías comentar lo que dices de los "packages". Gracias.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 01-08-2005
Avatar de fryguy
fryguy fryguy is offline
Miembro
 
Registrado: mar 2004
Posts: 18
Poder: 0
fryguy Va por buen camino
Gracias por todas las aclaraciones, no eran necesarias pero aclaran un poco más esta consulta.
Por uso en el IDE y debuggeando me refiero a ejecutar la aplicación desde el IDE mismo con F7, F8 o F9. Si bien es en definitiva compilada y se trapean los breakpoints y demás, permite al desarrollador un seguimiento de las sentencias que se van ejecutando.
Mi consulta, en definitiva, es si existe alguna directiva (opción o cualquier otra cosa) que me permite habilitar una porción de código mientras la aplicación se ejecuta desde el IDE y que, una vez compilada (compiled o built en inglés) ya no se encuentre disponible.

Pordón por tantas consultas tan confusas, tal vez no se expresar exactamente lo que necesito.
__________________
"Fools are the only folks on earth who can absolutely count on getting what they deserve" S.K.
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


La franja horaria es GMT +2. Ahora son las 20:06:39.


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