Incluyendo los archivos del cliente para archivos compartidos
Pregunta
Está bien, así que tengo 2 proyectos para un juego. Uno de ellos es el servidor y uno es el cliente. Guardo las unidades compartidas en una carpeta compartida que utilizo para incluir en mi proyecto de cliente / servidor. Hay un problema, sin embargo: Tengo un archivo compartido que necesita un archivo diferente para el cliente / servidor. Ejemplo: mySharedLib necesita para imprimir en la consola, sin embargo, la consola de cliente / servidor es diferente. ¿Cuáles son mis opciones? Gracias
Solución
En el archivo compartido que podría utilizar definir compilador Directiva
Por ejemplo
{$IFDEF MYSERVER}
Writeln('Server'); // this code executes
{$ELSE}
Writeln('Client'); // this code does not execute
{$ENDIF}
A continuación, en su proyecto de servidor definir un MISERVIDOR definir y en su cliente de definir una MyClient, a continuación, cuando los seperates código compartido utilizan un comunicado {$ IFDEF).
Desde el Delphi ayuda en las definiciones condicionales:
Las directivas condicionales $ IFDEF, IFNDEF $, $ IF, $ ELSEIF, ELSE $, $ ENDIF, y $ IfEnd permitirá compilar código o suprimir basado en el estado de un símbolo condicional. $ $ IF y ELSEIF le permiten basar la compilación condicional en identificadores declarados Delphi. $ Compila IFOPT o suprime código dependiendo de si un modificador de compilador especificada está habilitada.
Esto sin embargo no funciona si el código compartido se encuentra en una DLL o cualquier otro tipo de recurso compartido cumplido tales como un paquete.
Desde el Delphi ayuda en las definiciones condicionales:
Definiciones condicionales se evalúan sólo cuando se vuelve a compilar el código fuente. Si cambia el estado de un símbolo condicional y luego vuelve a generar un proyecto, el código fuente en unidades sin cambios, no puede volver a compilar. Uso de proyecto | Generar Todos los proyectos para asegurar que todo en su proyecto refleja el estado actual de símbolos condicionales.
Otros consejos
Si son diferentes, no son realmente un archivo compartido más.