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 :

Fenêtre se ferme même avec le ReadLn final


Sujet :

Free Pascal

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Par défaut Fenêtre se ferme même avec le ReadLn final
    Bonsoir,

    Ma fenêtre d'exécution se ferme, même en ajoutant un readln (tout seul, pas dans un while ou quoi que ce soit), il ne s'exécute que trop peu de temps pour lire. J'ai essayé, en faisant boucler un delay(1000) jusqu'à 10 avant la fin du programme, de faire garder la fenêtre ouverte au moins 10 secondes, mais rien n'y fait cela s'enlève tout de suite...

    Pouvez-vous m'aider ?

  2. #2
    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
    Citation Envoyé par Pitch56 Voir le message
    Bonsoir,

    J'ai le même problème que cheylard, sauf que moi même en ajoutant un readln ( tout seul, pas dans un while ou quoi que ce soit), il ne s'exécute que trop peu de temps pour lire. J'ai essayé en faisant boucler un delay(1000) jusqu'à 10 avant la fin du programme de faire garder la fenêtre ouverte au moins 10 secondes, mais rien n'y fait cela s'enlève tout de suite...

    Pouvez vous m'aider?
    N'as tu pas fais un read avant le readln?
    Tu peux aussi faire un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    repeat
    until keypressed;
    pour garder la fenetre.
    Il serait preferable que tu nous montre un peu de code pour qu'on sache exactement ce qui ne va pas

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Par défaut
    Bonsoir,
    même avec le repeat cela ne fonctionne pas. En fait c'est un morceau de programme que je dois incorporer dans le reste ( jeu de combat naval ( projet scolaire...)) mais que j'ai fait séparément pour le tester.
    Voila le code.

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    Program testproc;
     
    uses crt;
     
    Type carte = record nom : string;
                        bat : array[1..5] of string[8];
                 end;
         tcarte = array[1..10] of carte;
     
    var j, i, chiffr, g, tempr, templ : integer; m, s: string; f: text; lettr, o: char; p: integer; d : tcarte; res: integer;
     
    Procedure cartehasard(var res: integer);
     
    var i, o: integer; s: string[5]; p: string; f: text;
     
    begin
    	assign(f,'carto.txt');
    	reset(f);
    	randomize;
    	i:=0;
    	while (not eof(f)) do
    	begin
    		read(f,s);
    		if (s = 'Carte')
    		then i:=i+1
    		else readln(f,p)
    	end;
    	res:=random(i)+1;
    	close(f);
     
    End;
     
    begin
    	assign(f,'carto.txt');
    	reset(f);
    	j:=1;
    	g:= 1;
    	cartehasard(i);
    	while (j<i) AND (not eof(f)) do
    	begin
    		readln(f,s);
    		i:=i+1;
    		while (s<>'') do
    		begin
    			readln(f,s);
    		end;
    	end;
    	readln(f, d[g].nom);
    	i:= 0;
    	while (i<5) do
    	begin
                    i:= i+1;
                    read(f,d[g].bat[i]);
    		read(f,m);
    		while (m<>'') do
    		begin
    		     read(f,o);
    		end;
    		read(f, lettr);
    		read(f,chiffr);
      end;
      writeln(d[g].nom);
      while (i>0) do
      begin
           writeln(d[g].bat[i]);
           i:=i-1;
      end;
      close(f);
      repeat
      until keypressed;
     
     
    end.
    carto.txt est assigné comme il faut sous windows, mais ici je l'avais fait comme cela pour le compiler au Pool de la fac (Solaris).

    Je précise que j'utilise Dev Pascal pour compiler et exécuter sous vista ( à défaut de linux sous la main...)...

  4. #4
    Membre chevronné

    Inscrit en
    Avril 2003
    Messages
    284
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 284
    Par défaut
    Tu as sans doute une erreur d'execution, que tu ne vois pas puisque tu lances ton programme depuis windows.

    lance une console en choisissant:
    menu vista > executer > tape cmd puis cliques sur ok

    Navigue dans cette console jusqu'au répertoire de ton projet compilé avec les commandes de navigation msDos classiques puis lance ton programme compilé.
    Tu pourras lire le message d'erreur.

  5. #5
    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
    La premiere chose que je remarque est que tu n'as pas encore crée le fichier carto.txt, Ce qui necessaire avant toute operation de lecture. Si le fichier existe, peux tu nous le poster? peut etre qu'avec un peu de chance j'y jetterais un oeil pour voir ce qui ne vas pas.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Par défaut
    Je ne crois pas vraiment que le problème vienne du fichier qui existe bel et bien...
    Je ne pense pas non plus que cela soit dut à une erreur d'exécution, car quand je l'exécute, je vois bien (mais pas assez longtemps pour lire) qu'il affiche quelques lignes au hasard en changeant chaque fois. Je suppose que c'est dû au compilateur mais je suis loin d'être expert...

    carto.txt:
    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
    Carte Indien1872
    porteavion A1 E1
    croiseur H3 H6
    contretorp C5 C7
    torpilleur B9 B10
    sousmarin G9 I9
     
    Carte Pacifique7856
    torpilleur E2 F2
    sousmarin B3 B5
    croiseur G3 J3
    porteavion E5 E9
    contretorp G10 I10
     
    Carte Indien795
    torpilleur B4 B5
    contretorp D4 D6
    sousmarin F4 F6
    croiseur H4 H7
    porteavion J4 J8
     
    Carte Atlantique63
    porteavion C4 G4
    sousmarin I4 I6
    contretorp B5 B7
    torpilleur C8 D8
    croiseur F8 I8

  7. #7
    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
    rien ne s'affiche sur mon ecran avec le fichier que tu as donné. Peut qu'en zippant le programme avant de le poster, eviterait quelques erreurs

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Par défaut
    Tu as bien modifié le chemin qui mène à carto.txt pour que cela s'adapte à ton pc? Logiquement il devrait afficher la carte choisie au hasard, mais j'ai déjà fait pas mal de modif dans le code, que je vous avais donné, pour parvenir à afficher les bateaux sur la grille ( je suis entrain de m'arracher les cheveux la dessus ça m'énerve ;-)).

    Je suis actuellement en chambre d'étudiant ( kot pour les belges ;-)) et j'ai une très mauvaise connexion internet (problème de piratage du wifi à mon avis...) donc je n'enverrai pas cela avant le w-e ou je serai rentré chez moi...

    Merci beaucoup pour l'aide rapide que vous apportez en tout cas...

  9. #9
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    8 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 8 055
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Tu ouvres le fichier carto.txt en début de programme puis tu le réouvres immédiatement dans la procédure cartehasard.

    Une fois cela corrigé, il y a un problème dans la lecture du fichier carto.txt : par exemple, le mot "porte avions" compte pour deux champs texte, pas un seul.
    Tu ne rencontrerais pas ce genre de problème en travaillant avec un fichier d'enregistrements.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  10. #10
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    j:=1;
    	g:= 1;
    	cartehasard(i);
    	while (j<i) AND (not eof(f)) do
    	begin
    		readln(f,s);
    		i:=i+1;
    		while (s<>'') do
    		begin
    			readln(f,s);
    		end;
    	end;
    j'aimerais bien pouvoir comprendre l'utilité de cette partie du code. cartehasard(i) donne u nombre au moins egal à 1. Et pour n grand, la probalité de donner un i>j est tend vers 1. Alors, on ne sortira de la boucle que si il se produit eof(f). Ce qui fait ce bout de code est à mon avis inutile. De plus, pourquoi faire des lectures si on ne les utilise pas ?

    Jusque là, on sais qu'on sort de la boucle que si il se produit eof(f). La ligne qui vient juste apres, essaie de faire une lecture dans le fichier, or on sait qu'on est dejà au bout du fichier. Le resultat ne peut etre que la cata*.

    Alors qu'on j'ai dit que le programme n'affiche rien sur mon ecran, je crois que c'est du à ce probleme.

Discussions similaires

  1. [Turbo Pascal] La fenêtre d'exécution se ferme automatiquement même avec un ReadLn à la fin
    Par olivier021072 dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 21/04/2012, 16h38
  2. Réponses: 3
    Dernier message: 25/03/2009, 19h15
  3. Ma fenêtre se ferme
    Par Tiaps dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/11/2005, 17h29
  4. TForm pour plusieurs fenêtre dans une même fonction ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 5
    Dernier message: 15/11/2005, 12h38
  5. Problèmes avec les variables final
    Par casolaro dans le forum Langage
    Réponses: 7
    Dernier message: 09/12/2004, 14h29

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