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

Cpcdos Discussion :

Intéraction entre C++ et CPCDOSC+


Sujet :

Cpcdos

  1. #1
    Membre à l'essai
    Intéraction entre C++ et CPCDOSC+
    Hello,
    J'ai un projet en tête pour CPCDOS en C++, mais j'aurais besoin d'interagir avec le moteur CPCDOSC+ (comme faire system(lacommande); )
    Est possible, de faire ça ?

    Merci d'avance pour vos réponse

  2. #2
    Membre éclairé
    Bonjour,
    Oui cela est tout à fait possible!
    En fait tu n'as qu'a faire un espèce de "Terminal" ou en fait ce que l'utilisateur écrit dedans (donc en C++) sera traduit en CPCDOS par ton programme (le terminal que tu vas créer) pour que le noyaux comprenne ce que tu lui demande.
    Je te fait un petit exemple même si je ne connais pas trop la syntaxe du C++:
    Dans ce programme, je code un langage de programmation (pour ce que tu veux faire le C++).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //Ici je ne code que la partie d'affichage d'un texte écrit en C++ vers le CPCDOS
    //La variable commande est la variable qui récupère ce que l'utilisateur entre dans le terminal
    
    SI/ %commande% = std::cout << "TonTexte" << std::endl; (:
    // Et là tu affiche TonTexte en faisant comme si chaque caractère de %commande% était un emplacement d'une liste
    //Pour t'expliquer je vais faire comme en Python car c'est que je connais de mieux...
    //print(commande[14:14])
    FIN/ SI
    Est-ce que tu as compris comment faire?
    N'hésite pas à demander de l'aide!
    Cordialement,
    Herman Adrien.

  3. #3
    Membre à l'essai
    Merci de ta réponse mais je pense qu'on s'est mal compris voila se que je pense faire.

    Voila un exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <cstdlib>
    #include <iostream>
    
    int main(int argc, char* argv[])
    {
        std::string arg = argv[1];
        std::string cmd = "txt/ " + arg;
        system(cmd.c_str());
    }

  4. #4
    Membre éclairé
    Oui moi aussi je crois qu'on c'est mal compris...
    Je ne connais pas la syntaxe du C++ et je ne comprends pas trop où tu veux en venir? Tu veux passer du C++ au CPCDOS ou du CPCDOS au C++?
    Cordialement,
    Herman Adrien.

  5. #5
    Membre à l'essai
    Je veux passer de l'information qui viens du C++ vers du CPCDOSC+. Pour par exemple coder un message box en C++ sur un OS CPCDOS

  6. #6
    Membre éclairé
    À ce moment là il faut faire comme je l'ai dit:
    _Tu récupère dans une variable une commande qui peut provenir d'un fichier(dans ce cas ta variable correspondera à la ligne x d'un fichier) ou d'un terminal
    _Tu fais tout un tas de conditions dans ton code qui correspond aux commandes du C++
    _Et à l'intérieure de ta condition tu met l'action qu'effectue normalement le C++ mais tu l'écrit en CPCDOSC+

    Pour ce qui est de créer des fenêtres etc... en C++ il va falloir inventer une syntaxe qui reste dans l'esprit du C++ et la traduire en CPCDOSC+ mais avant il faut recoder toutes les commandes C++ de 0.
    Cordialement,
    Herman Adrien.

  7. #7
    Membre à l'essai
    Bon j'ai fait mes recherche.

    Et notre chère Sébastien a coder une sorte de SDK pour coder en C++ pour la version 4 un peu de patience et je pourrais faire joujou avec CPCDOS et le C++

    Merci quand même pour tes réponses BlackoOSX

  8. #8
    Membre éclairé
    De rien &#128521;&#128521;
    Cordialement,
    Herman Adrien.

  9. #9
    Membre éclairé
    Oui c'est possible de coder en C++ pour CpcDos, actuellement tu peux utiliser Cwc pour compiler un exécutable compatible Windows/CpcDos

    Tu peux télécharger ici la version 0.4
    Note: la version 0.5 semble avoir un problème, mais je suis sur le projet.

    Un exemple pour lire un fichier se trouve dans les démos ("Demos\Platform_Specific\CpcDos\01_OpenFile")

    Dans ton cas il te faut utiliser la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int Level = 0;
    CpcDos->Shell_CCP("Commande", Level);
    ou bien la fonction C:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    extern "C" void cpc_CCP_Exec_Commande	 (char* COMMANDE, int ID);
    Linx, un nouveau langage intuitif
    Simacode IDE, auto-complétion & compilation instantané
    GZE, moteur 2d/3d multi-langage/multi-plateforme

  10. #10
    Membre à l'essai
    Ow sa c'est intéressant merci maeiky

  11. #11
    Membre à l'essai
    Dernière question à quoi correspond l'argument level ?

  12. #12
    Membre éclairé
    Si je ne dis pas de connerie ça correspond au niveau de priorité.


    Le langage CpcdosC+ va évoluer, va passer à la version CpcdosC+ 3.0, et certaines choses venant de la Alpha 3.9 et antérieure ne fonctionnera plus correctement. Tout comme la commande FIX/ qui par défaut créera des variables type PRIVE avec 5 niveaux différents
    Variable privé / public niveau :
    - [1] Procédures / fonctions
    - [2] Applications / processus
    - [3] Utilisateur(s)
    - [4] Système(s) d'exploitation
    - [5] Kernel
    Read more at http://cpcdos.e-monsite.com/pages/qu...xTxb1Td0WxV.99
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    REM/ Pour tous le programme, on se met au niveau 3 (USER)
    REM/ Donc on evite de relancer une autre instance pour cette version ;)
    ccp/ /optimisation = 1
    
    ccp/ /fix.niveau = 3
    Du coup je suis un peu dans le champ avec mon "0"
    Le mieux serait donc "3", je vais demander à Seb de mettre cette valeur par défaut, on n'aura donc pas à se poser la question.

    Pour lancer une .exe sous CpcDos, il faut entrer la commande (avec l'exemple "OpenFile") :

    exe/ /pe OpenFile.exe
    Linx, un nouveau langage intuitif
    Simacode IDE, auto-complétion & compilation instantané
    GZE, moteur 2d/3d multi-langage/multi-plateforme

  13. #13
    Membre à l'essai
    Super Merci ^^