Compresi i file client per file condiviso
Domanda
Va bene, così ho 2 progetti per un gioco. Uno è il server e uno è il cliente. Tengo le unità condivise in una cartella condivisa che uso per includere nel mio progetto client / server. C'è un problema però: ho un file condiviso che ha bisogno di un file diverso per il client / server. Esempio: mySharedLib deve stampare alla console, ma la console client / server è diverso. Quali sono le opzioni? Grazie
Soluzione
Nel file condiviso si potrebbe usare definire compilatore direttiva
Ad esempio
{$IFDEF MYSERVER}
Writeln('Server'); // this code executes
{$ELSE}
Writeln('Client'); // this code does not execute
{$ENDIF}
Poi, nel tuo progetto di server definire una MYSERVER definire e nel client di definire una MYCLIENT uno, poi, quando le separa codice condiviso utilizzare un'istruzione {$ IFDEF).
Delphi aiuto su definizioni condizionali:
Le direttive condizionali $ IFDEF, $ IFNDEF, $ IF, $ ELSEIF, ELSE $, $ ENDIF, e $ IfEnd permettono di compilare o il codice di sopprimere in base allo stato di un simbolo condizionale. $ IF e $ ELSEIF consentono di basare compilazione condizionale su identificatori di Delphi dichiarati. $ Compila IFOPT o evita di codice a seconda che uno switch del compilatore specificato è abilitato.
In questo modo, tuttavia, non funziona se il codice condiviso è in una DLL o di qualsiasi altro tipo di risorsa condivisa conformato come un pacchetto.
Delphi aiuto su definizioni condizionali:
Definizioni condizionali vengono valutate solo quando il codice sorgente viene ricompilato. Se si modifica lo stato di un simbolo condizionale e quindi rigenerare un progetto, il codice sorgente in unità invariato, non può essere ricompilato. Utilizzare Project | costruire tutti i progetti per assicurare che tutto nel progetto riflette lo stato attuale dei simboli condizionali.
Altri suggerimenti
Se sono diversi, non sono in realtà un file condiviso più.