IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

[Windows\Linux] Comment détecter le système d'exploitation ?


Sujet :

Langage Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2004
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 50
    Points : 25
    Points
    25
    Par défaut [Windows\Linux] Comment détecter le système d'exploitation ?
    Bonjour,

    Je viens de coder une application, qui doit s'exécuter sous windows et linux.
    Existe-t-il un code, permettant de détecter si le programme s'exécute sur windows ou sur linux?

    sinon, comment marche les directifes {ifdef} de delphi, qui me permettraient de contourner le problème.

    Merci d'avance

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Non : tout simplement parcequ'un exécutable Windows ne tourne pas sous Linux et réciproquement.

    Pour faire ça, tu devras de toutes façons recompiler ton programme en compilation conditionnelle, et il doit être créé en utilisant la CLX plutôt que la VCL.
    En gros, lorsque tu vas devoir inclure du code spécifique aux plate-formes (laisse le compilateur te dire où il est en activant les avertissements, ce sera bien plus efficace), et tu vas te retrouver avec du code de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    // Code commun (CLX)
    ..
    ...
    {$IFDEF MSWINDOWS}
    // Code spécifique Windows.
    ....
    {$ENDIF}
    {$IFDEF LINUX}
    // Code spécifique Linux.
    ....
    {$ENDIF}
    // De nouveau, code commun.
    ...
    Ces deux définitions/macros (MSWINDOWS et LINUX) sont définies au sein même de Kylix/Delphi, tu n'as donc pas à te soucier de leur existence ou pas : la macro LINUX n'existe JAMAIS sur Delphi/Windows (même en mode CLX), et existe TOUJOURS sous Linux. Inversement, la macro MSWINDOWS existe toujours sous Delphi/Windows (y compris en mode CLX), et jamais sous Linux.

    C'est un peu plus clair pour toi ?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2004
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 50
    Points : 25
    Points
    25
    Par défaut
    merci beaucoup.

    le code que j'ai fait, est compilable avec FreePascal.
    Et je comptais néamoins le compiler avec Delphi et Kylix.

    Merci pour les réponses sur les {ifdef}.

    cela devrait faciliter l'accès à mon "driver" cd.
    merci beaucoup

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par Millenod
    le code que j'ai fait, est compilable avec FreePascal.
    Et je comptais néamoins le compiler avec Delphi et Kylix.
    Attention, ce n'est alors pas gagné : je ne sais pas quelles sont les directives définies par FreePascal !! Celles que je t'ai donnée sont pour Delphi et Kylix, il te faudra les tester sous FreePascal.

    Pour plus de détails, regarde l'aide sur la compilation conditionnelle, les macros prédéfinies y sont en général recensées.

    Citation Envoyé par Millenod
    cela devrait faciliter l'accès à mon "driver" cd.
    Un "driver" ?? J'espère pour toi que c'est juste une encapsulation, car la réalisation de drivers n'est déjà pas triviale en soi, alors en mode portable, c'est presque impossible...

    Si toutes tes questions sont résolues, pense à cliquer sur en bas à gauche stp.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2004
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 50
    Points : 25
    Points
    25
    Par défaut
    il ne s'agit pas d'un "driver" à proprement parlé, au sens de Walter Oney...
    je n'ai pas la prétention d'arriver jusque là.
    (puis l'écriture en c ne me motive pas)

    il s'agit d'une interface, permettant la détection des lecteurs, et l'envoie de commandes.
    - pour le code w9x, je me contente de passer par wnaspi32.dll
    - pour le code w2k\xp\2k3 : utilisation de SPTI, et des DeviceIOControl
    - pour la partie linux, j'ai pour le moment juste fait la détection des lecteurs.

    FreePascal, n'était pour moi qu'une alternative... recommendé par un ami;
    je préfère cependant utiliser delphi et kylix.

    merci beaucoup pour ton aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 246
    Dernier message: 25/07/2020, 10h22
  2. Réponses: 5
    Dernier message: 11/10/2010, 14h02
  3. Comment connaitre le système d'exploitation d'un ordinateur distant ?
    Par chercheur3 dans le forum Programmation et administration système
    Réponses: 6
    Dernier message: 14/05/2007, 21h45
  4. [Free Pascal] Cross-compiling Windows -> Linux : comment faire ?
    Par zafo dans le forum Free Pascal
    Réponses: 5
    Dernier message: 01/03/2007, 13h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo