Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   consulta sobre {$ifdef} and {$define} (https://www.clubdelphi.com/foros/showthread.php?t=62037)

Enan0 02-12-2008 12:10:42

consulta sobre {$ifdef} and {$define}
 
Hola chicos. como estan?? espero que preparandose para este año nuevo que nos viene con un gra reto para podos.

Bueno tengo una consulta con los IFDEF and Define.
Lo que quise hacer fue (ya que la aplicacion tiene muchos IFdef. por distintos modulos)
Optimizarlos, de manera que en las Opciones del proyecto, Solo Cargue unos pocos DEF.. (los que generalizan a los modulosde aplicacion) y el Resto Definirlos en el Proyecto pro codigo..

Lo que quedaria de la Siguiente manera.

Código Delphi [-]

Program XXX;

// standard Builds.
{$ifdef Std}
   {$define REGISTEREDVERSION}
   {$define v625}
   {$define drawdots}
   {$define serprogesa}
   {$define Haechler}
   {$define H_v001_b}
   {$define MilestoneColor}
   {$define CustomFields}
   {$define KVK}
   {$define heisel}
   {$define hockey}
   {$define NO_MULTI}
   {$define PTTW}
   {$DEFINE TT_Langs}
   {$define Final}
   {$define WorkDayFix}
{$endif}
// check If a Beta Version
{$ifdef B}
   {$define Beta}
{$endif}
// if v 2007 Load this packagers.
{$ifdef 2007}
   {$define TTv62}
   {$define TTv625}
{$else}
   {$define V7}
   {$define V7_P}
   {$define V7_ico}
   {$define TTv7}
   {$define skin}
   {$define fixscreen}
{$Endif}

(*
Special Functions
*)
//Functions For KvK
{$ifdef KN}
   {$define kvk_n}
{$Endif}
// open Fastes projects
{$ifdef pf}
   {$define v7_f}
{$endif}


USES .....;

El problema es que no ME toma los $DEFINE.. Si los $ifdef Cabeseras..

Alguna IDea?

gracias

Enan0 02-12-2008 12:13:07

Una cosa mas.

Digamos. Si me Toma el $define.

Si es que este esta en la misma unidad.. (pero no globalmente.)

a esto se debe mi error?

gracias.

Lepe 02-12-2008 15:46:49

escribe los defines en un archivo .inc (un archivo de texto estandar para este tipo de cosas), llámalo "Tupaquete.inc"

En cada módulo que lo uses inclúyelo:
Código Delphi [-]

{$I Tupaquete.inc}

implementation

Saludos

Enan0 03-12-2008 09:39:33

Hola Lepe..

GRacias por tu Informacion..

es una buena opcion.. pero la verdad que actualmente el Proyecto tiene muchas dependencias.. mas de 200
y la verdad que no me parece facil tener que editar uno a uno..

igual gracias por el dato, un dia que ande con mucha vagancia voy a hacerlo..

Lepe 03-12-2008 12:51:59

Siempre digo lo mismo.... haz un programa que edite automáticamente los .pas.

No es para nada complejo:
- Haz copia de seguridad !!!!
- Buscar todos los archivos .pas de una carpeta y si acaso recursivo (usa los trucos del foro).
- un bucle while para todos los archivos encontrados:
- carga el primer archivo en un TStringlist con LoadFromFile
- busca la palabra "implementation" y guarda la línea donde la linea donde la has encontrado.
- inserta una nueva linea: stringlistArchivo.insert(lineaImplementation, '{$I archivo.inc}');
- guarda el stringlist.
- ¡¡ a por otro archivo !!

Si has usado los define en la parte interface (arriba del todo del .pas, tendrás que incluir el archivo después de los uses).
Ten en cuenta que quizás algún archivo no tenga la parte implementation, controla esas cosas antes que obtener una excepción en el programa.

Yendo con pies de plomo... puedes tardar 30 minutos en hacer ese programita, ejecutarlo es cosa de niños ;)

Saludos

Soa Pelaez 09-12-2015 21:09:26

Cita:

Empezado por Lepe (Mensaje 329099)
escribe los defines en un archivo .inc (un archivo de texto estandar para este tipo de cosas), llámalo "Tupaquete.inc"

En cada módulo que lo uses inclúyelo:
Código Delphi [-]

{$I Tupaquete.inc}

implementation

Saludos

Me gustaria que me explicarás esa parte, lo requiero urgente.

Casimiro Notevi 10-12-2015 00:19:07

Cita:

Empezado por Soa Pelaez (Mensaje 500341)
Me gustaria que me explicarás esa parte, lo requiero urgente.

A tus órdenes, dejamos todo lo que estamos haciendo y te contestamos.

Casimiro Notevi 10-12-2015 01:34:56

Cita:

Empezado por Soa Pelaez (Mensaje 500352)
Podrías colaborarme intente algo así pero no logro que funcione.

Crea un hilo nuevo con tu duda. Aquí solamente debes responder si vas a aportar algo a la solución de este hilo.


La franja horaria es GMT +2. Ahora son las 09:13:26.

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