Question

Ok, donc j'ai 2 projets pour un jeu. L'un est le serveur et l'autre est le client. Je garde les unités partagées dans un dossier partagé que j'utiliser pour inclure dans mon projet client / serveur. Il y a un problème cependant: j'ai un fichier partagé qui a besoin d'un fichier différent pour le client / serveur. Exemple: mySharedLib a besoin d'imprimer sur la console, mais la console client / serveur est différent. Quelles sont mes options? Merci

Était-ce utile?

La solution

Dans votre fichier partagé vous pouvez utiliser définir directive compilateur

Par exemple

{$IFDEF MYSERVER}
    Writeln('Server');  // this code executes
{$ELSE}
    Writeln('Client');  // this code does not execute
{$ENDIF}

Ensuite, dans votre projet de serveur définir un MYSERVER définir et dans votre client de définir un myclient, puis lorsque le partage de code seperates utiliser une instruction {IFDEF $).

De Delphi aide sur les définitions conditionnelles:

  

Les directives conditionnelles IFDEF $, $ IFNDEF, $ SI, SINON $, $ ELSE, $ ENDIF et $ IFEND vous permettent d'établir ou un code de suppression en fonction de l'état d'un symbole conditionnel. $ IF et $ ELSEIF vous permettent de baser la compilation conditionnelle sur les identificateurs Delphi déclarés. $ Compilable IFOPT ou supprime le code selon que le commutateur de compilateur spécifié est activé.

Cela ne fonctionnera pas si le code partagé est dans une DLL ou tout autre type de ressource partagée respecté comme un paquet.

De Delphi aide sur les définitions conditionnelles:

  

Définitions conditionnelles sont évaluées seulement lorsque le code source est recompilé. Si vous modifiez un statut de symbole conditionnel, puis reconstruire un projet, le code source en unités inchangées peut ne pas être recompilé. Utilisation du projet | Construire tous les projets pour assurer que tout dans votre projet reflète l'état actuel des symboles conditionnels.

Autres conseils

Si elles sont différentes, ils ne sont pas vraiment un fichier partagé plus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top