Je développe actuellement une application simple pour compter le nombre de clics en 10 secondes, lire les noms et les scores de deux fichiers différents, puis afficher ces noms et scores avec différents types dans un autre format. Cependant, une fois le jeu terminé, le jeu est terminé. message apparaît, le formulaire Leaderboard apparaît mais n'a pas de boutons, semble étrangement plat et semble planter le programme.Pascal - Le programme se bloque lors du changement de formulaire
Voici comment la forme devrait ressembler à: Leaderboard Form
Et voici comment il ressemble réellement: Leaderboard Error in Form
code pour afficher le formulaire se trouve ci-dessous:
if TimeLeft=0 then
begin
Form2.Timer1.Enabled:=False;{Disable timer}
ShowMessage('Game Over!');{Message to show upon termination condtion being met}
Leaderboard.Show;{Show Leaderboard Form}
Form2.Hide;{Hide game}
Reset(LeaderboardNamesFile);{Open file}
while not EOF(LeaderboardNamesFile) do
LineCount:=LineCount+1;{Increment to allow for EOF marking of the score}
LeaderboardScoresArray[LineCount]:=Score;{Add score to array of scores}
end;
Et la code contenu dans le bouton d'affichage Score du formulaire Classement:
var Counter : Integer;
begin
Counter:=1;
Memo1.Lines.add(LeaderboardNamesArray[Counter]+' - '+IntToStr(LeaderboardScoresArray[Counter]));
end;
Je trouve cela très étrange, car rien ne s'exécute réellement lorsque le formulaire est affiché, il devrait donc se bloquer avant, voire jamais, et aucun message d'erreur n'apparaît. Des idées? Si plus d'informations si nécessaire, s'il vous plaît demander. Nouveau sur ce site!
Le nom ne serait-il pas lu dans la variable Score? Je suis confus quant à la façon dont cela aide. Je suis en fait plus confus qu'il y a quelqu'un qui code encore en Pascal! – Syla
@Syla: Beaucoup de gens codent en Pascal. La plupart d'entre eux en Delphi ou FreePascal, mais aussi dans d'autres versions de Pascal. Veuillez relire la réponse: si vous ne lisez rien, EOF ne deviendra * jamais * vrai, donc la boucle ne s'arrêtera jamais. 'EOF'stands pour" fin de fichier "et qui ne peut être atteint que si vous lisez réellement à partir du fichier. Donc soit utiliser un autre critère pour arrêter la boucle, soit supprimer complètement la boucle, ou bien, lire quelque chose du fichier jusqu'à la fin, comme le montre la réponse. –
@RudyVelthuis Merci, je ne lisais pas correctement. – Syla