Précédent   Forum du club des développeurs et IT Pro > Autres langages > Pascal > Free Pascal
Free Pascal Le compilateur Pascal multiplateforme
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 25/11/2012, 17h06   #1
Transgarp
Membre du Club
 
Avatar de Transgarp
 
Inscription : février 2008
Messages : 97
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : février 2008
Messages : 97
Points : 59
Points : 59
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.
Transgarp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2012, 18h31   #2
Roland Chastain
Membre Expert
 
Homme Roland Chastain
Inscription : décembre 2011
Messages : 687
Détails du profil
Informations personnelles :
Nom : Homme Roland Chastain
Âge : 39
Localisation : Mali

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : décembre 2011
Messages : 687
Points : 1 002
Points : 1 002
De mon côté (Windows 7 x32) le code suivant s'exécute correctement :

Code :
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.
__________________
L'Art est long et le Temps est court.
Roland Chastain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2012, 21h31   #3
Transgarp
Membre du Club
 
Avatar de Transgarp
 
Inscription : février 2008
Messages : 97
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : février 2008
Messages : 97
Points : 59
Points : 59
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 :
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.
Transgarp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2012, 23h48   #4
Roland Chastain
Membre Expert
 
Homme Roland Chastain
Inscription : décembre 2011
Messages : 687
Détails du profil
Informations personnelles :
Nom : Homme Roland Chastain
Âge : 39
Localisation : Mali

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : décembre 2011
Messages : 687
Points : 1 002
Points : 1 002
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
Type de fichier : zip essai_wingraph.zip (38,4 Ko, 4 affichages)
__________________
L'Art est long et le Temps est court.
Roland Chastain est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/11/2012, 16h36   #5
Transgarp
Membre du Club
 
Avatar de Transgarp
 
Inscription : février 2008
Messages : 97
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : février 2008
Messages : 97
Points : 59
Points : 59
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
Transgarp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2012, 21h27   #6
Roland Chastain
Membre Expert
 
Homme Roland Chastain
Inscription : décembre 2011
Messages : 687
Détails du profil
Informations personnelles :
Nom : Homme Roland Chastain
Âge : 39
Localisation : Mali

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : décembre 2011
Messages : 687
Points : 1 002
Points : 1 002
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 :
1
2
3
cd C:\Program Files\DOSBox-0.74\
DOSBox -noautoexec C:\Jeux\Vikings\Vikings.exe
exit
__________________
L'Art est long et le Temps est court.
Roland Chastain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2012, 16h04   #7
Transgarp
Membre du Club
 
Avatar de Transgarp
 
Inscription : février 2008
Messages : 97
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : février 2008
Messages : 97
Points : 59
Points : 59
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
Transgarp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2012, 18h31   #8
M.Dlb
Rédacteur/Modérateur
 
Avatar de M.Dlb
 
Inscription : avril 2002
Messages : 2 275
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : avril 2002
Messages : 2 275
Points : 3 382
Points : 3 382
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.
__________________
M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal
M.Dlb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2012, 18h15   #9
Transgarp
Membre du Club
 
Avatar de Transgarp
 
Inscription : février 2008
Messages : 97
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : février 2008
Messages : 97
Points : 59
Points : 59
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 :
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.
Transgarp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2012, 13h36   #10
Transgarp
Membre du Club
 
Avatar de Transgarp
 
Inscription : février 2008
Messages : 97
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : février 2008
Messages : 97
Points : 59
Points : 59
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
Transgarp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 13h41.


 
 
 
 
Partenaires

Hébergement Web