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

Free Pascal Discussion :

E/S redirigées depuis/vers une procédure


Sujet :

Free Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Par défaut E/S redirigées depuis/vers une procédure
    Salut à tous, j'ai une question concernant des programmes console sous fpc.

    Je sais comment rediriger des E/S depuis/vers un fichier texte.

    Ce que je voudrais, c'est parvenir à rediriger les entrées/sorties standards depuis/vers une PROCEDURE en pascal qui serait stockée dans une unité, du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure InputChar(var k:char);
     begin
      ...
     end;
     
    procedure OuputChar(k:char);
     begin
      ...
     end;
    Je me fais vieux et un peu noc et j'ai pas trop le temps de chercher.
    Toutes vos idées seront les bienvenues, même si ça doit passer par une recompilation de fpc ou d'une des unités standards...

    PS : c'est dans le cadre d'un projet de freeware que j'ai en tête, il n'y a pas vraiment d'échéance, j'en suis aux "études de faisabilité" comme on dit...

  2. #2
    Membre émérite
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Par défaut
    Euh... est-ce que mon idée est complètement débile, ou est-ce que c'est vraiment difficile ?

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 466
    Par défaut
    Je ne pense pas que ça soit possible nativement avec free pascal (ni avec aucun compilateur d'ailleurs, mais je me trompe peut-être)... Quel est l'intérêt de faire ça ?

    Sinon tu peux récupérer les infos de l'entrée standard et faire trois instructions qui appellent la procédure avec les paramètres que tu as récupéré de l'entrée standard.

  4. #4
    Membre émérite
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Par défaut
    Citation Envoyé par wormful_sickfoot Voir le message
    Je ne pense pas que ça soit possible nativement avec free pascal (ni avec aucun compilateur d'ailleurs, mais je me trompe peut-être)... Quel est l'intérêt de faire ça ?
    J'espérais que, peut-être, il existait une variable système "magique" à modifier...

    L'idée était, dans le cadre d'un modeste logiciel d'initiation aux bases du Pascal, de pouvoir modifier simplement un code d'initiation écrit par un "élève" utilisateur Lambda avec des Writeln et Readln, pour que les entrées/sorties se fassent non pas sur l'austère fenêtre console de "base", mais sur une fenêtre plus agréable à l'œil et à l'utilisation, avec quelques gadgets simplifiant la vie du débutant. En outre, ça permettrait d'intégrer quelques fonctions graphiques "maison" (c'est toujours plus sympa avec des graphiques).

    J'étais parti de l'idée d'intégrer la fenêtre en question dans l'exécutable compilé, surtout à cause de la possibilité d'utiliser des fonctions graphiques, d'où ma question sur la modification des E/S.

    Maintenant, quitte à faire un "preprocessing" du code écrit par M. Lambda, je pourrais effectivement rechercher tous les writeln et tous les readln, et les remplacer par des fonctions maison juste avant la compilation, ce qui alors amène une deuxième question : comment écrire une fonction Writeln2 et une fonction Readln2 dont les comportements, au niveau des paramètres, soient exactement les mêmes que pour Writeln et Readln ?

    Sinon, on peut aussi compiler le code de Lambda "tel quel" et l'appeler depuis l'IDE d'initiation (Lazarus ou Delphi) avec un TProcess fournissant le handle de fenêtre pour l'unité des fonctions graphiques... mais c'est un peu bricolo.

    Enfin, je réfléchis, je réfléchis...

    Citation Envoyé par wormful_sickfoot Voir le message
    Sinon tu peux récupérer les infos de l'entrée standard et faire trois instructions qui appellent la procédure avec les paramètres que tu as récupéré de l'entrée standard.
    J'ai peur de ne pas comprendre exactement.
    Peux-tu être plus précis ?

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 466
    Par défaut
    En fait, si je comprends bien, tu voudrais que la console soit plus belle, pour simplifier un peu ?

    Dans ce cas, pourquoi ne pas réécrire une fonction writeln et readln dans une autre unité qui acceptent les mêmes paramètres, et de forcer l'appel à ces deux procédures ? Mais attention, readln et writeln peuvent avoir un nombre de paramètres variables, il y avait déjà eu une discussion à ce sujet ici il y a fort longtemps, il faudrait rechercher le sujet...

  6. #6
    Membre émérite
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Par défaut
    Ah ben oui, c'est bête, je n'avais même pas pensé à surcharger WriteLn et ReadLn, quel boulet !

    Bon je vais me mettre en chasse du fil en question ce WE, et sinon j'irai piocher dans les unités système. Merci !

Discussions similaires

  1. Réponses: 11
    Dernier message: 22/11/2013, 05h18
  2. [Batch] rediriger cmd vers une variable
    Par amine.h dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 24/10/2010, 16h11
  3. Rediriger stderr vers une liste ?
    Par Cypra dans le forum Général Python
    Réponses: 2
    Dernier message: 21/05/2009, 15h08
  4. Goto vers une procédure totalement lisible
    Par sechanbask dans le forum Général VBA
    Réponses: 10
    Dernier message: 06/06/2007, 18h22
  5. Rediriger dynamiquement vers une autre page aspx
    Par MayOL69bg dans le forum ASP.NET
    Réponses: 1
    Dernier message: 23/05/2007, 18h19

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