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

Turbo Pascal Discussion :

Par quoi remplacer Turbo Pascal sans devoir tout réécrire ? [FAQ] [Turbo Pascal]


Sujet :

Turbo Pascal

  1. #1
    Membre averti

    Inscrit en
    Janvier 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Janvier 2009
    Messages : 37
    Par défaut Par quoi remplacer Turbo Pascal sans devoir tout réécrire ?
    Bonjour,

    Je programme depuis plus de vingt ans en TP (commencé en autodidacte avec la 3.0 et actuellement, avec la dernière version 7.0) et je me fais plaisir avec un wargame héroïque fantaisie dans mon univers de jeu de rôle niveau stratégique/résolution combats niveau tactique et une sorte de jeu de plateau/wargame dans l'espace où en revanche il n'est jamais fait appel au hasard pour résoudre les combats (tout est question de positionnement, de rapport de force et d'encerclement, etc...). Le plaisir est autant dans la réalisation du programme qu'ensuite dans la recherche des meilleurs algorithmes pour faire réfléchir l'ordinateur et avoir un adversaire potable (bon, aprés 20 ans, résultat peu convainquant quand même. Allez dire à un ordi comment deviner que pour franchir une rivière infranchissable à un hexagone, il faut utiliser le pont qui est à 40 hexagones...Amusant, mais mon algorithme doit être perfectible !!). Ceci dit, pour un gars qui a fait littéraire et licence de philo et qui joue en autodidacte car c'est intellectuellement stimulant, ne jetons pas la pierre.

    Pourtant, après toutes ces années, je réfléchis sérieusement à quitter TP pour un autre langage. A vrai dire, un peu marre du 640*480 en maximum et de 16 couleurs seulement. Malgré des prouesses en "dessin"pour représenter des unités comme des Orcs, des Ogres, des géants, et des terrains un peu sympa en 21*21 pixels, je n'ai jamais trouvé le coup pour modifier cet environnement graphique (je connais le principe de la palette, mais avec plus de 220 pions différents, c'était un exercice trop compliqué).

    Ma question est donc simple : vers quel programme partir avec la contrainte de pouvoir "migrer" des milliers de lignes sans passer des heures à tout réécrire ?

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 468
    Par défaut
    FreePascal est ton ami

    Jette un œil ici : http://pascal.developpez.com/compilateurs/fpascal/

    De plus en plus de gens utilisent FreePascal, pour la simple et bonne raison, qu'il est compatible avec TP (pas besoin de tout réécrire) et qu'il permet d'accéder aux fonctionnalités offertes par Windows 32 bits (programmation graphique, mémoire étendue, etc... la liste est très longue).

  3. #3
    Membre confirmé Avatar de Transgarp
    Profil pro
    Inscrit en
    Février 2008
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 99
    Par défaut
    Citation Envoyé par DUGUERPF Voir le message
    Bonjour,
    A vrai dire, un peu marre du 640*480 en maximum et de 16 couleurs seulement.
    Bizarre, sur BP7 j'arrive à faire 1024 x 768 en utilisant le driver IBM8514.bgi

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 468
    Par défaut
    Autant passer directement aux modes graphiques étendus, avec VESA ou autres...

  5. #5
    Membre averti

    Inscrit en
    Janvier 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Janvier 2009
    Messages : 37
    Par défaut
    Merci wormful_sickfoot pour ta réponse. J'ai téléchargé et je vais voir un peu ce que cela donne.

    Merci aussi à Transgarp. Je plaide humblement coupable, en ce sens que beaucoup de choses me sont encore incompréhensibles après 20 ans de programmation. Le manque de base se fait parfois ressentir. Ainsi, vous n'imaginez pas les trésors d'imagination pour se passer des pointeurs (je n'ai jamais rien compris à ce truc, aux notions de piles, etc...), et à ma grande honte, cela m'empêche toujours de réussir une "sauvegarde graphique" d'une partie pour faciliter le ré-affichage après des affichages intermédiaires.

    Bah, maintenant, l'important est de se faire plaisir ! Pour comprendre, je pense qu'il me faut attendre de rencontrer un jour un programmeur capable de m'expliquer de visu !

    Je reposterai après avoir essayé ce Freepascal (la nuit s'annonce courte avec cette nouveauté sous la dent...).

    Enfin, au passage, merci aussi à celui qui a intelligemment renommé le sujet !

  6. #6
    Membre chevronné
    Avatar de richard
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2002
    Messages : 476
    Par défaut
    Pour les pointeurs envoie-moi un mp et je t'enverrai par courrier quelques pages très claires sur le sujet. La notion de pointeur suppose que tu connaisses quelques éléments sur l'architecture interne de l'ordinateur.

    Pour le reste, rien à ajouter : freepascal est excellent.

  7. #7
    Membre averti

    Inscrit en
    Janvier 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Janvier 2009
    Messages : 37
    Par défaut
    Freepascal installé, semblant fonctionner, mais dés que je veux compiler, même un truc très simple, il note :
    "Unable to open file [chemin]fp.cfg"
    Fatal:compilation aborted.

    Hors ce fichier est bien à sa place...Corrompu ?

    Richard : je te MP

  8. #8
    Membre chevronné
    Avatar de richard
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2002
    Messages : 476
    Par défaut
    Freepascal ne supporte pas les noms de répertoire avec des espaces. Pour tes fichiers crée un répertoire \PersoPas par exemple dans lequel tu eux mettre autant de sous rép que tu veux mais sans espaces.

    Sinon as-tu vérifié ta variable PATH ?

  9. #9
    Membre averti

    Inscrit en
    Janvier 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Janvier 2009
    Messages : 37
    Par défaut
    Hélas oui. Il continue de me dire :

    Fatal:unable to open file d:\FPC\2.2.2\bin\i386-win32\fp.cfg

    Hors le fichier est bien dans le répertoire...Et le pb est moins semble-t-il de ne pas le trouver que de l'ouvrir.

    Bon, je vais chercher une nouvelle version à télécharger et voir si j'ai le même pb...

  10. #10
    Membre chevronné
    Avatar de richard
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2002
    Messages : 476
    Par défaut
    Yop hop hop ! Ne serait-ce point le redoutable bug de "l'Opentium3" ?

    Essaie ça :

    1. Ouvrir le fichier C\FPC\2.2.2\bin\i386-win32\fp.cfg
    2. Supprimer (sauvagement si possible) toutes les lignes contenant : -Opentium3
    3. Sauvegarder fp.cfg et réouvrir freepascal
    4. Compiler à nouveau et vérifier si le bug se reproduit


    Le bug est référencé ici : http://bugs.freepascal.org/view.php?id=11865

    Si ça ne marche pas, alors problème de fichier corrompu peut-être, en effet.

  11. #11
    Membre averti

    Inscrit en
    Janvier 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Janvier 2009
    Messages : 37
    Par défaut
    Richard, tu me sauves la vie !

    Fini les nocturnes !

    Il me reste juste à apprendre les petit nouveaux trucs (comme l'impossibilité de modifier une variable de boucle dans une boucle), mais je crois que je tiens le bon bout.

    Effectivement, en première approche, freepascal semble répondre à mon problème, même s'il faudra travailler un peu. Mais son module debug aide beaucoup à localiser les choses qu'il ne supporte pas.

    Donc je dis, question solutionnée et

    Merci à tous les intervenants !

  12. #12
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 979
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 979
    Par défaut
    Coa,
    Citation Envoyé par DUGUERPF Voir le message
    ...
    comme l'impossibilité de modifier une variable de boucle dans une boucle
    ...
    Ça, c'est standard en Pascal, et c'est un des points où TP s'était hélas permis de sortir du standard.

  13. #13
    Membre chevronné
    Avatar de richard
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2002
    Messages : 476
    Par défaut
    En fait je crois que ce n'était pas une volonté de Borland mais plutôt une faille dans le compilateur car cette possibilité n'était pas (sauf erreur ou omission : je n'ai plus mes manuels de Turbo pascal V.4, 5.5 et 6 sous la main) référencée dans la doc. Je pense que le compilateur ne vérifiait pas que le compteur était incrémenté dans la boucle. Et, si mes souvenirs sont bons toujours, il y avait une différence de comportement à ce propos entre TP V 4.0 TP 6.0.
    Ce qui fait que cette possibilité est une source inépuisable de bugs exprimés ou latents... assez difficile à déceler. Il est toujours possible de définir une autre variable (ou plusieurs) avec un incrément dépendant du compteur de la boucle avec même une autre condition ou une autre boucle. Ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     FOR compteur:=1 to 10 do
      Begin
       Writeln(compteur);
         IF VariableAuxiliaire < 18 THEN
            Begin
              VariableAuxiliaire:= compteur *2 ;
              Writeln(VariableAuxiliaire);
            End; (*IF*)
       End; (*FOR*)

  14. #14
    Membre averti

    Inscrit en
    Janvier 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Janvier 2009
    Messages : 37
    Par défaut
    Source de bugs ? C'est sûr. Combien de soirées et de "F8" à les traquer ! Ne riez pas, mais comme j'ai tout appris sur le tas, en avançant au fur et à mesure, je viens de découvrir le "break" après 17 ans de TP ! Comme quoi...

    Ceci dit, j'ai déjà passé déjà tout un programme en "break". Tout aussi efficace, mais il est vrai que comme je n'ai quasiment plus de bugs dans le wargame, et que de toute façon, ils ne viennent pas de là...(et si je savais d'où ils viennent ! Une petite bêtise quelques parts j'en suis sûr, mais je trouverai à force de rédiger pour moi des descriptifs des rares plantages. Je finirai bien par trouver le point commun...).

    Quant à Freepascal, il me met une erreur d'exécution sur le plus gros programme (refusant de le lancer), tout en acceptant de le compiler. Il faut que je trouve le moyen de prendre les procédures essentielles une par une pour les tester et trouver celle qu'il n'aime pas ! (graphismes ? appel interruption pour lire la souris ? Gestion des lectures/écritures sur le disque ?).
    Bah ! Un défi de plus à relever (c'est madame qui va être contente).

  15. #15
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 979
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 979
    Par défaut
    Gae,
    Citation Envoyé par DUGUERPF Voir le message
    Source de bugs ? C'est sûr. Combien de soirées et de "F8" à les traquer ! Ne riez pas, mais comme j'ai tout appris sur le tas, en avançant au fur et à mesure, je viens de découvrir le "break" après 17 ans de TP ! Comme quoi...

    Ceci dit, j'ai déjà passé déjà tout un programme en "break". Tout aussi efficace, mais il est vrai que comme je n'ai quasiment plus de bugs dans le wargame, et que de toute façon, ils ne viennent pas de là...(et si je savais d'où ils viennent ! Une petite bêtise quelques parts j'en suis sûr, mais je trouverai à force de rédiger pour moi des descriptifs des rares plantages. Je finirai bien par trouver le point commun...).
    D'où je conclus que tu modifiais la variable de contrôle de la boucle.

    Quand on a "besoin" de faire ça, c'est qu'une boucle for n'est pas le bon type de boucle pour gérer le travail à faire, tout simplement.

    Citation Envoyé par DUGUERPF Voir le message
    Quant à Freepascal, il me met une erreur d'exécution sur le plus gros programme (refusant de le lancer), tout en acceptant de le compiler. Il faut que je trouve le moyen de prendre les procédures essentielles une par une pour les tester et trouver celle qu'il n'aime pas ! (graphismes ? appel interruption pour lire la souris ? Gestion des lectures/écritures sur le disque ?)
    Un programme qui compile sans erreur n'a jamais été garanti être un programme opérationnel.

    La différence avec TP est que ton programme "tombait en marche" par chance, ou suite à d'éventuelles initialisations que FP ne ferait pas (je n'y crois pas beaucoup).

  16. #16
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    Salut,

    Consernant la modification de la variable de la boucle for, on peut bien s'en passer en utilisant break ou continue selon les usages. Ce qui permet par exemple de simuler des pas comme le faisait le bon vieux basic.

    Que ça soit ou non un bug sous tp7, j'avoue que j'en ai bien profiter dans le temps

    Je trouve comme meme bizzard qu' apres 17 ans de programmation, on n' ait pas encore fait les pointeurs. Personnellement, je ne trouve pas ça plus compliquer que trouver par tous les moyens une solution alternative. Ce qui peut se faire avec plusieurs ligne de code. Une journée suffit pour comprendre le concept fondamental des pointeurs.

  17. #17
    Membre chevronné
    Avatar de richard
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2002
    Messages : 476
    Par défaut
    Après quelques recherches, je persiste à dire que c'était non pas une fonctionnalité mais une lacune dans la vérification du compilateur. Il est d'ailleurs possible de tromper également FreePascal en modifiant la variable de la boucle FOR mais il faut faire preuve de plus d'astuce : Voici le code permettant de le faire (ce que je ne recommande à personne) :

    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
    17
    18
    19
    20
    21
    22
    23
     
    Program Farce;
     
    Var i: Integer;
     
     
    Procedure ModifieVariable;
     
      Begin
      i:=i+1;
      End;{ModifieVariable}
     
    BEGIN {Principal}
     
      FOR i:=1 to 10 DO
        Begin
        ModifieVariable;
        Writeln('La valeur de i est : ', i);
        End; {FOR}
     
      Readln;
     
    END. {Principal}
    Cela passe bien entendu par une variable globale.

  18. #18
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 979
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 979
    Par défaut
    Voe,
    Citation Envoyé par darrylsite Voir le message
    Je trouve comme meme bizzard qu' apres 17 ans de programmation, on n' ait pas encore fait les pointeurs. Personnellement, je ne trouve pas ça plus compliquer que trouver par tous les moyens une solution alternative. Ce qui peut se faire avec plusieurs ligne de code. Une journée suffit pour comprendre le concept fondamental des pointeurs.
    De quoi (ou qui) parles-tu là. ?

  19. #19
    Membre chevronné
    Avatar de richard
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2002
    Messages : 476
    Par défaut
    Je suppose qu'il faisait allusion à ceci :

    Citation Envoyé par DUGUERPF Voir le message
    Ainsi, vous n'imaginez pas les trésors d'imagination pour se passer des pointeurs (je n'ai jamais rien compris à ce truc, aux notions de piles, etc...),
    Cela étant je me permets de remarquer sans aucune agressivité que ce genre de commentaire ne fait pas tellement avancer les choses et qu'il eût été plus constructif je pense de renvoyer notre aimable correspondant vers des liens efficaces de tutoriaux sur les pointeurs (je lui ai envoyé un MP avec un début d'explication pour ma part, et j'attends son commentaire pour le diriger vers d'autres choses).

  20. #20
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 979
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 979
    Par défaut
    Nao,
    Citation Envoyé par richard Voir le message
    Je suppose qu'il faisait allusion à ceci :



    Cela étant je me permets de remarquer sans aucune agressivité que ce genre de commentaire ne fait pas tellement avancer les choses et qu'il eût été plus constructif je pense de renvoyer notre aimable correspondant vers des liens efficaces de tutoriaux sur les pointeurs (je lui ai envoyé un MP avec un début d'explication pour ma part, et j'attends son commentaire pour le diriger vers d'autres choses).
    Ok.

    Mais je pense que les MP ne sont pas une bonne solution. Nous sommes sur un forum public, et les réponses ou coups de main devraient être accessibles à tous.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Par quoi remplacer insertAdjacentHTML pour FF
    Par lodan dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 22/02/2007, 16h56
  2. par quoi remplacer DTS2000
    Par nutix2003 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/11/2006, 16h47
  3. Réponses: 1
    Dernier message: 05/06/2006, 18h27
  4. Par quoi remplacer le mot Démarrer?
    Par sourivore dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 08/03/2006, 15h08
  5. Réponses: 2
    Dernier message: 16/01/2006, 23h59

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