Bonjour
J'aimerais afficher une phrase de manière séquentielle.
Exemple : soit le mot toiture.
J'aimerais afficher d'abord t puis o puis i... jusqu'à e chacun à son tour.
J'ai essayé avec delay mais ça a affiché tout d'une fois.
Merci de m'aider![]()
Bonjour
J'aimerais afficher une phrase de manière séquentielle.
Exemple : soit le mot toiture.
J'aimerais afficher d'abord t puis o puis i... jusqu'à e chacun à son tour.
J'ai essayé avec delay mais ça a affiché tout d'une fois.
Merci de m'aider![]()
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 // variables de sauvegarde var _WS : string; // le mot ou la phrase _WL : integer; // la longueur de la chaine // sauvegarde une chaine function registerWord(S: string): integer; begin _WS := S; _WL := Length(S); result := _WL; end; // renvois un caractère de _WS function stepWord(i : integer): char; begin if (i >= 1) and (i <= _WL) then result := _WS[i]; else result := #0; end; // vitesse d'affichage en milliseconde const Speed = 500; // etape et taille maximale var Step, maxLength : integer; // début begin // on commence à 1 Step := 1; // on prépare un mot et on récupère la taille maximale maxLength := registerWord('Toiture'); // une boucle, tant que Step est inférieur à taille max while Step <= MaxLength do begin // affiche la suite du mot write( stepWord(Step) ); // incremente Step inc(Step); // fait une pause delay(Speed); end; // attend qu'on appuis sur une touche pour quitter readln; end.
[ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
Ma messagerie n'est pas la succursale du forum... merci!
Un code un peu plus simple et peut-être plus compréhensible :
Ce code marche à coup sûr par contre celui proposé par Dr.Who contient des incohérences de types. En plus une fonction doit retourner un résultat, ce qui n'a pas été fait.
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 Uses crt; Var S:String; {Chaine à afficher} i:Integer; {Compteur pour la boucle FOR} Begin TextAttr:=blue Shl 4 +14; ClrScr; {TP pour DOS uniquement : Texte jaune sur Fond bleu. Ce formatage du texte n'est pas obligatoire} {On peut donc s'en passer} Write('Donner une chaine : ');Readln(S); Writeln; For i:=1 to length(s) do begin Write(S[i]); Delay(400); end; Readln; End.
Ne pas oublier le tag
si satisfait.
Voter pour toute réponse satisfaisante avec
pour encourager les intervenants.
Balises CODE indispensables. Regardez ICI
Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
Vous pouvez consulter mes contributions
Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
Ne pas oublier L'Aide VBScript et MSDN VB6 Fr
salut.
le code fourni par l_autodidacte peut être exécuter sous Turbo Pascal 7 pour DOS ou bien sous FreePascal ou Lazarus
Ma Chaine youtube : https://www.youtube.com/@medBkDev
Mes Articles
guide du débutant pour apprendre à programmer en Java -
FAQ Java et les cours et tutoriels Java
Bonjour
Moi je dirai la fonction renvoie bien un résultatparce qu'il y a un result qui récupère la résultat à retourner.
Maintenant il est vrai qu'on est dans la section Turbo Pascal et le code de Dr.Who ne compilerait pas dessus mais compilerait sous Free Pascal par exemple en apportant quelques changements (ajout de crt, mode de compilation) (bref c'est du code pour delphi).
Une chose et certaine, c'est qu'une fonction qui retourne un résultat(du moins c'est ce que j'ai appris à faire sous TP et BP) doit avoir une structure telle que la suivante(et là je sais que je n'apprends rien à personne) :Moi je dirai la fonction renvoie bien un résultat
Le fait d'écrire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Function MaFonction(Param1:<type>;Param2:<Type>...) :Type; VAR var1,var2,[....]:type; Begin ........................... ........................... MaFonction:=....(résultat ou Variable de retour); End;n'implique rien pour la fonction s'il ne lui a pas été affecté.
Code : Sélectionner tout - Visualiser dans une fenêtre à part result:=......
Voici le code intégral de la fonction en question auquel manque l'affectation de result à la fonction StepWord
Tu es d'accord avec moi qu'avant le "End;" final de la fonction, on devait mettre : StepWord:=result;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 function stepWord(i : integer): char; begin if (i >= 1) and (i <= _WL) then result := _WS[i]; else result := #0; end;
Que le code compile ou non sous un autre EDI, pour moi(peut-être un peu borné dira-t-on), il a été invoqué sous la rubrique TP et par conséquent, la réponse(ou commentaire) devrait en principe s'y rattacher.
Ne pas oublier le tag
si satisfait.
Voter pour toute réponse satisfaisante avec
pour encourager les intervenants.
Balises CODE indispensables. Regardez ICI
Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
Vous pouvez consulter mes contributions
Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
Ne pas oublier L'Aide VBScript et MSDN VB6 Fr
Si tu as bien remarque, result n'est pas une variable declarée dans la fonction. Comme la dit krachik, le code passe bien sous fpc par exemple mais pas sous tp.
Tu as tout a fait raison qu'on doit poster un code qui marche sous turbo pascal. Mais c'est un truc qui arrive souvent quand on travaille avec plusieurs langage/compilateur.
Partager