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 :

Unité Graph sous Windows 7 x64


Sujet :

Free Pascal

  1. #1
    Membre régulier 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
    Points : 76
    Points
    76
    Par défaut Unité Graph sous Windows 7 x64
    Bonjour,

    J'ai un vieux programme TP7 qui se promène entre le mode texte et le mode graph et qui fonctionne bien actuellement seulement en utilisant DosBox 0.74
    Mais qui fonctionne dans un seul sens avec Free Pascal sans DosBox : oui je peux entrer en mode graphique, mais quand je reviens en mode texte, tous les caractères sont illisibles

    J'ai bien écrit CloseGraph et RestoreCRTMode à la fin du programme
    Mais ça ne change rien.

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 085
    Points : 15 494
    Points
    15 494
    Billets dans le blog
    9
    Par défaut
    De mon côté (Windows 7 x32) le code suivant s'exécute correctement :

    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
    24
    25
    26
    27
    28
    29
    30
     
    program Graph_01;
     
    {$APPTYPE CONSOLE}
    {$MODE DELPHI}
     
    uses
      Graph, WinCrt;
     
    var
      Gd, Gm: smallInt;
     
    begin
      WriteLn('Passage au mode graphique dans 3 secondes.');
      Delay(3000);
     
      Gd := Detect;
      InitGraph(Gd, Gm, '');
     
      if GraphResult = grOk then
      begin
        SetColor(LightGray);
        OutText('Retour au mode texte dans 3 secondes.');
        Delay(3000);
        CloseGraph;
      end;
     
      WriteLn('Fin du programme dans 3 secondes.');
      Delay(3000);
    end.

  3. #3
    Membre régulier 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
    Points : 76
    Points
    76
    Par défaut
    Ton code fonctionne merveilleusement bien sur mon ordi.
    Mais pratiquement inutilisable vu qu'en mode texte j'utilise des GotoXY pour placer le texte et beaucoup d'autres procédures et fonctions de l'unit CRT qui est incompatible avec l'unit WinCRT
    J'utilise souvent la procédure ClrScr pour nettoyer l'écran et ammener le curseur tout en haut à gauche

    A moins que l'unit WinCRT possède des fonctions et procédures équivalentes.

    En modifiant ton code, La phrase ne s'écrit pas complètement à la sortie du mode graphique

    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
    24
    25
    26
    27
    28
    29
    30
    program Graph_01;
     
    {$APPTYPE CONSOLE}
    {$MODE DELPHI}
     
    uses
      Crt,Graph,WinCrt;
     
    var
      Gd, Gm: smallInt;
     
    begin
      WriteLn('Passage au mode graphique dans 3 secondes.');
      Delay(3000);
     
      Gd := Detect;
      InitGraph(Gd, Gm, '');
     
      if GraphResult = grOk then
      begin
        SetColor(LightGray);
        OutText('Retour au mode texte dans 3 secondes.');
        Delay(3000);
        CloseGraph;
      end;
      clrscr; 
      GotoXY(1,20); WriteLn('Fin du programme dans 3 secondes.');
      WriteLn('Fin du programme dans 3 secondes.'); 
      Delay(3000);
    end.

  4. #4
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 085
    Points : 15 494
    Points
    15 494
    Billets dans le blog
    9
    Par défaut
    Je pense à une autre solution qui serait de remplacer l'unité Graph par l'unité WinGraph.
    J'ai fait l'essai avec le code que tu as posté. Je n'ai changé que cette ligne :

    Et, surprise, ça fonctionne ! (Je joins un exécutable.)

    Je ne sais pas si cela marcherait avec ton programme mais ça vaut peut-être la peine d'essayer. Les deux unités ayant une interface presque identique, il n'y aurait peut-être que quelques modifications à faire. Et les possibilités de WinGraph sont bien supérieures !
    Fichiers attachés Fichiers attachés

  5. #5
    Membre régulier 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
    Points : 76
    Points
    76
    Par défaut
    Finalement, j'ai trouvé l'unit WinGraph sur le web.
    Cà fonctionne parfaitement avec le petit programme.
    Mais cà bloque dans mon gros programme quand j'entre dans la fenêtre graphique.
    Je dois quitter par la fenêtre texte

  6. #6
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 085
    Points : 15 494
    Points
    15 494
    Billets dans le blog
    9
    Par défaut
    Le mieux, c'est peut-être de continuer à utiliser DosBox, non ?

    S'il y a une application que tu utilises régulièrement, tu peux te servir d'un fichier de commande. Pour ma part j'en ai quelques-uns que j'ai placés directement dans mon menu Démarrer. Voici le contenu de Vikings.bat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cd C:\Program Files\DOSBox-0.74\
    DOSBox -noautoexec C:\Jeux\Vikings\Vikings.exe
    exit

  7. #7
    Membre régulier 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
    Points : 76
    Points
    76
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Le mieux, c'est peut-être de continuer à utiliser DosBox, non ?
    DosBox ne permet pas d'utiliser les pleines performances de mon I7-3930K 3.20Hhz 32G ram sur Windows 7 x64
    Oui tout mes vieux programmes Borland aussi anciens de 1990 fonctionne parfaitement sous DosBox, mais pas en utilisant les 64 bit du I7
    Même Basica d'IBM version 1983 fonctionne parfaitement sous DosBox

    Depuis que j'utilise Free Pascal 2.6, impossible de retourner en arrière.
    J'adore tout les nouveaux types de nombre (Int64, QWord, etc...) et la mémoire de 4G facilement utilisable pour mes Array non pointeur
    En Array par pointeur, je gagne 50% plus de vitesse mais en limitant la mémoire des Array utilisé à 1G
    En gros, tout mes programmes fonctionne 5 fois plus rapidement sur Free Pascal que sur BP7

    En attendant de trouver la recette miracle pour marier le mode texte et le mode graphique en utilisant les pleines performances; je sépare mes programmes compilé soit 100% en mode texte ou 100% en mode graphique

    De plus, je ne suis plus esclave des BGI de Borland, tout programme compilé en mode Release, sont portable sur tout mes anciens ordis

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 465
    Points : 4 312
    Points
    4 312
    Par défaut
    Bonjour,

    Il ne faut tout de même pas oublier qu'un programme quand il est compilé, avec un certain niveau de langage, n'a de chance de marcher qu'avec les autres composants du même niveau ou de la même époque... Autrement dit, un programme écrit et compilé avec Turbo Pascal en environnement DOS n'a plus beaucoup de chances de tourner correctement avec un environnement Windows 7 64 bits, surtout si ce programme fait des choses plus supportées (comme le graphisme en mode pur et dur). La compatibilité a ses limites.

    Le mieux c'est de passer aux interfaces fenêtrées, qui existent déjà depuis une bonne quinzaine d'années dans le monde Windows.

  9. #9
    Membre régulier 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
    Points : 76
    Points
    76
    Par défaut
    Citation Envoyé par wormful_sickfoot Voir le message
    Le mieux c'est de passer aux interfaces fenêtrées, qui existent déjà depuis une bonne quinzaine d'années dans le monde Windows.
    Depuis 1990 avec Borland Pascal 7.0 quand on compile en application Windows

    Reste que je suis enchanté de Free Pascal 2.6 que j'ai découvert il y a 3 semaines
    Je ne comprends pas pourquoi je n'avais pas regardé plus à fond FPC 2.4 il y a trois ans

    Maintenant je peu compiler des applications graphiques full HD 1920x1080
    Truc presque impensable autrefois
    Certain que pour le moment, je n'ai pas trouvé la facon idéale de connecter entre les deux modes dans le même programme.
    Mais tout fonctionne parfairement en 64 bits séparément dans les deux modes

    Simplement ce petit test me convient amplement côté mémoire utilisable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Program MaxLongArray;
     
    Const
      MAX = 470000000;
     
    Var 
      I  : LongInt;
      TT : Array [1..MAX] of Longint;
     
    Begin
     For I:=1 to MAX Do TT[I]:=I;
     Writeln('OK');
    End.

  10. #10
    Membre régulier 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
    Points : 76
    Points
    76
    Par défaut
    Finalement, j'ai trouvé une béquille pour utiliser les commandes du clavier en mode graphique.
    Je ne fais que mettre la fenêtre texte du programme par dessus la fenêtre graphique dans un coin.
    Et je peu presque tout faire

    Voici l'exécutable zippé d'un petit programme que j'ai cuisiné en fin de semaine.
    Il dit simplement combien de fois plus rapide qu'un IBM-PC 8088 que votre ordinateur exécute mon petit programme.

    C'est bien utile quand je veu savoir quel gain vitesse je peu obtenir avec un moderne I7 sous Windows 7

    http://transgarp.dyndns.org/div/sig.zip

Discussions similaires

  1. [Free Pascal] Unité Graph sous Mac OS.X
    Par KIORPR dans le forum Free Pascal
    Réponses: 0
    Dernier message: 01/08/2012, 10h43
  2. [Free Pascal] Unité Graph sous FreePascal et/ou Lightweight-IDE 0.9.4+
    Par KIORPR dans le forum Free Pascal
    Réponses: 4
    Dernier message: 27/07/2012, 10h35
  3. [Eclipse 3.2] Problème d'affichage sous Windows 7 x64
    Par dark.jabberwock dans le forum Eclipse Platform
    Réponses: 3
    Dernier message: 20/01/2012, 10h52
  4. IIS sous Windows 2003 X64 et Oracle 10g X64
    Par commit dans le forum Oracle
    Réponses: 0
    Dernier message: 10/10/2007, 19h47
  5. [FreePascal] Unité Graph sous Linux
    Par fire.stone dans le forum Free Pascal
    Réponses: 2
    Dernier message: 18/05/2005, 10h13

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