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 Pascal Discussion :

[LG]Connaitre l'OS utilisé avec Pascal


Sujet :

Langage Pascal

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 6
    Points : 1
    Points
    1
    Par défaut [LG]Connaitre l'OS utilisé avec Pascal
    Bonjour,

    Je cherche la fonction (et l'unité qui va avec ) pascal qui permet de connaitre l'OS utilisé par le programme.
    La connaissez-vous ?
    Mon soft doit tourner sur solaris, linux et win....


    merci d'avance
    <<-Ilove->>

  2. #2
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Je ne connais pas un tel OS mais par contre il t'est possible de connaître toutes les informations sur une machine en utilisant les variables d'environnements (tu peux voir leur liste en tapant Set dans la fenêtre Dos).

    Pour le faire, inspire toi de l'exemple pour simuler un interpréteur de commande en Pascal (aide sur GetEnv je crois...) (tu simules l'exécution de la commande ver toi même et tu recupères le résultat dans un string)

    @+

  3. #3
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    TP est uniquement pour DOS, si tu veux compiler pour d'autres plateformes regarde le post-it de Pascail, au début de ce forum.
    Il faudra que tu aies 3 sources différentes pour chaque plateforme, j'espère que tu en es conscient...
    Je pense que le meilleur moyen est de tester les variables d'environnement (si elles existent), enfin de trouver un truc spécifique à chaque environnement... Vu que tu as trois 3 sources, il ne devrait pas y avoir de difficultés !
    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Oui c'est vrai que j'ai du poser cette question un peu vite....
    mais en fait je n'utilise pas Turbo pascal, j'utilise Gnu Pascal (sous solaris et linux) et Freepascal (sous win et linux)....
    En fait pr le moment, je n'ai besoin de connaitre l'os pour une seule chose, savoir ou mettre lun fichier de sauvegarde.
    Donc je pensais, avec une simple condition, assigner mon fichier a un chemin différent en fonction de l'os en cours... donc la source serait la mm pr tt les OS.
    Ce ne serait pas possible ?
    <<-Ilove->>

  5. #5
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 939
    Points : 59 409
    Points
    59 409
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    Il existe une fonction GetWindowsDir qui permet à un programme DOS de déterminer le répertoire de Windows.
    En cas d'échec, la fonction retourne 0. Ce serait déjà un premier pas juste pour tester la présence de Windows ?

    Cette fonction se trouve dans l'unité VER (en fait, j'ignore si cette unité est fournie avec TP - elle l'est avec BP en tout cas).

    Beeeuh j'ai posté ma réponse en même temps que la tienne, d'où je tombe à côté du sujet...
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bon j'ai essayé "Getenv", mais je suppose qu'il est dans une unit que je ne connais pas... vous pourriez me dire laquelle ?
    [Ou alors je capte pas la syntaxe ]
    <<-Ilove->>

  7. #7
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Citation Envoyé par Ilove
    mais en fait je n'utilise pas Turbo pascal, j'utilise Gnu Pascal (sous solaris et linux) et Freepascal (sous win et linux)....
    Deux compilateurs donc deux sources différentes ! Le problème reste le même... Comment différencier linux et windows ou linux et solaris ? Tu peux tester la présence de l'int 21 pour windows ( en espérant qu'elle existe encore pour windows XP...) , ou tester l'int 80 pour linux... Pour solaris, je ne connais pas du tout donc je ne peux pas t'aider...

    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  8. #8
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Bon en fait, l'astuce que je donnai était valable uniquement pour déterminer la version de Windows en cours.

    Bon voici un petit code que tu vas tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    program GetWindowsVersion;
    uses Dos;
     
    var version1,path : string;
        cmd : string;
    begin
    	path := 'C:\';
    	version1 := '/C '+ 'ver' + '>'+Path+'Version.dat';
    	version2 := '/C '+ 'Os' + '>>'+Path+'version.dat';
     
    	Swapvectors;
    	Exec(GetEnv('CompSec'),version1);
    	Exec(GetEnv((CompSpec'),version2);
    	SwapVectors;
    end.
    Le résultat (le fichier version.dat) sera à la racine du disque dur.
    Les variables d'environnement Os et ver nous donnant respectivement la version de Windows et du Dos en cours.

    @+

  9. #9
    HRS
    HRS est déconnecté
    Membre confirmé
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    677
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 677
    Points : 638
    Points
    638
    Par défaut
    utilisez la compilation conditionnelle en testant les variables
    d'environnement du compilateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    {$IFDEF VER1_0_6}
        writeln ("compilateur FREE Pascal version 1.0.6");
    {$ELSE}
        writeln ("compilateur autre");
    {$ENDIF}
    je suppose qu'il doit exister d'autres variables pour l'OS tel
    __WIN32__ ou __LINUX__

  10. #10
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    HRS,
    Les variables que tu utilises te servent à retrouver la version de l'Os ou
    du compilateur?

    Citation Envoyé par Ilove
    Je cherche la fonction (et l'unité qui va avec ) pascal qui permet de connaitre l'OS utilisé par le programme.
    La connaissez-vous ?

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci pr vos réponse, j'y jeterais un coup d'oeil dès que j'aurais le temps... (un peu overbooké pr le moment )

    Mais quand tu parles de source différente, wormful, tu veux parler du code (=> le fichier .pas) ? Pcq ce fichier doit etre le mm pr tt les os. En fait, au final, je dois avoir un fichier/code qui compile sous linux, solaris, et win (avec fpc et gpc). :
    <<-Ilove->>

  12. #12
    HRS
    HRS est déconnecté
    Membre confirmé
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    677
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 677
    Points : 638
    Points
    638
    Par défaut
    avec FreePascal, on détermine d'abord l'OS global.
    A l'intérieur de la branche Windows, on pourra lancer une API pour
    savoir à quel niveau de Windows on est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    program quelos;
    begin
      {$IFDEF WIN32}
      writeln ('je suis sous win32');
      {$ELSE}
      writeln ('je ne suis pas sous win32');
      {$ENDIF}
    readln;
    end.

  13. #13
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Si tu as un seul compilateur qui existe pour les trois plateformes, tu n'auras besoin que d'un seul code source (fichier .pas), mais si tu as plusieurs compilateurs, il te faudra sûrement un fichier pas pour chaque compilateur, pour la simple et bonne raison que chaque compilateur est différent... Un code source peut être compilé correctement par un compilateur, mais il n'est pas garanti que ce même code puisse être compilé sans problème par un autre compilateur !

    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  14. #14
    HRS
    HRS est déconnecté
    Membre confirmé
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    677
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 677
    Points : 638
    Points
    638
    Par défaut
    wormful, vous n'avez pas dû comprendre mon 1er message.

    on peut distinguer un compilateur Pascal d''un autre

    VER130 pour le Pascal Objet 13.0 (Delphi 5)

    __GPC__ pour le GNU Pascal

    VER1_0_6 pour le FreePascal 1.0.6

    donc il faut combiner les variables OS et les variables compilateurs

  15. #15
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Si si j'ai parfaitement compris
    Seulement, la compilation conditionnelle n'est peut-être pas non plus supporté par tous les compilateurs...
    Cela dit, cette solution est totalement acceptable !!

    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  16. #16
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par wormful_sickfoot
    Un code source peut être compilé correctement par un compilateur, mais il n'est pas garanti que ce même code puisse être compilé sans problème par un autre compilateur !
    C'est justement ce que je doit garantir
    <<-Ilove->>

  17. #17
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Juste une question Ilove : j'espère que tu es conscient que tu obtiendras quoiqu'il arrive trois fichiers exécutables ? A moins qu'il existe une astuce pour avoir le même fichier exécutable...
    A la limite, le problème peut s'envisager différemment : plutot que de tester l'OS, faire carrément trois versions différentes du programme, pour chaque plateforme...

    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  18. #18
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par wormful_sickfoot
    Juste une question Ilove : j'espère que tu es conscient que tu obtiendras quoiqu'il arrive trois fichiers exécutables ? A moins qu'il existe une astuce pour avoir le même fichier exécutable...
    Oui oui oui, j'en suis conscient, le but est de faire UN code source qui soit compilable par fpc et gpc sous linux, solaris et win. Le tout en pascal "classique".
    Citation Envoyé par wormful_sickfoot
    A la limite, le problème peut s'envisager différemment : plutot que de tester l'OS, faire carrément trois versions différentes du programme, pour chaque plateforme...
    Et donc je ne peux pas faire ça



    Mais bon, la plateforme n'influenra pas bcp mon programme, jsute la façon de sauvegarder des données ds un fichier
    <<-Ilove->>

Discussions similaires

  1. [JSTL] [JBOSS] Utilisé JSTL avec MyFaces sur JBoss 4.0.4 CR2
    Par yakamax dans le forum Wildfly/JBoss
    Réponses: 3
    Dernier message: 22/05/2006, 16h30
  2. [TP] Journal de gravure de CD avec Pascal 7.0
    Par benjamin50 dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 04/11/2005, 15h04
  3. compatibilité des réels avec pascal (pour fichier de record)
    Par jacquesberger dans le forum Langage
    Réponses: 2
    Dernier message: 12/08/2005, 19h58
  4. [LG] Arbre avec pascal
    Par mondanikoffi dans le forum Langage
    Réponses: 1
    Dernier message: 21/07/2005, 13h36
  5. [TP]Comment je peux creer un bouton avec Pascal ?
    Par JaVaCode dans le forum Turbo Pascal
    Réponses: 8
    Dernier message: 06/12/2004, 18h28

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