Page 1 sur 1
Afficher le premier caractère d'une chaine ?
Publié : dim. 03/mai/2009 9:39
par Shinao
Bonjour,
je souhaiterais tout simplement afficher le premier caractère d'une chaine (string), je n'ai trouvé que soit le chercher ou compté les caractères

.
Merci d'avance
Publié : dim. 03/mai/2009 9:45
par tmyke
un petit code comme cela devrait correspondre à ce que tu cherches:
Code : Tout sélectionner
a$="c'est pourtant dans la doc"
Debug Left(a$,1)
Debug Len(a$)
ou de la même manière:
Code : Tout sélectionner
a.s="c'est vraiment dans la doc, si si"
Debug Left(a,1)
Debug Len(a)
Publié : dim. 03/mai/2009 10:03
par Shinao
Merci !
Et si je voudrais juste avoir par exemple le x de texte , comment faire ?
je veux dire sans connaître la variable aussi
merci d'avance
Publié : dim. 03/mai/2009 10:05
par tmyke
oui,
cherche si il y a un 'p' dans la chaine, et renvoi sa position si oui, sinon renvoi 0.
Publié : dim. 03/mai/2009 10:34
par Shinao
Il faut que je fasse avec toutes les lettres alors :X ?
enfaite, je voudrais afficher caractère par caractère

c'est possible ?
Publié : dim. 03/mai/2009 10:49
par Backup
voici 2 autres façons de trouver ou de chercher un caractere dans une chaine
exemple numero 1
cette procedure retourne la position du caractere "X" dans la chaine a$
Code : Tout sélectionner
a$="text"
Procedure search(a$)
For i=1 To Len(a$)
If Mid(a$,i,1)="x"
Break
EndIf
Next i
ProcedureReturn i
EndProcedure
ce 2eme exemple retourne la position d"un caractere recherché au choix
dans une chaine
et retourne 0 si pas trouvé
Code : Tout sélectionner
Procedure exist(a$,car_cherche$)
For i=1 To Len(a$)
If Mid(a$,i,1)=car_cherche$
trouve=1
Break
EndIf
Next i
If trouve=1
ProcedureReturn i
Else
ProcedureReturn 0
EndIf
EndProcedure
a$="choux"
chaine_cherche$="x"
Debug "le caractere "+Chr(34)+car_cherche$+Chr(34)+" de la chaine "+Chr(34)+a$+Chr(34)+" ce trouve en Position " +Str(exist(a$,car_cherche$))
Publié : dim. 03/mai/2009 11:01
par Shinao
Moi je veux afficher !!! Rrr ^^
mais j'ai trouvé le moyen si l'ordinateur est assez puissant pour un clearconsole() rapide.
Enfaite je voulais un effet de clavier à la console, et j'ai réussie , voici ma procédure pour pas la retaper (easy enfaite

) :
Code : Tout sélectionner
Procedure effet_clavier(texte.s, time.d)
boucle.l = 1
carac.l = Len(texte)
Repeat
Print(Left(texte,boucle))
boucle = boucle + 1
Left(texte,boucle)
Delay(100)
ClearConsole()
Until boucle = carac
Print(Left(texte,boucle)) ; pour le laisser sur l'écran
EndProcedure
edit : trop content de moi ma première procédure qui sert à quelque chose x)
Publié : dim. 03/mai/2009 11:07
par Shinao
Re, pour améliorer ma procédure , je voudrais savoir comment mettre en options certaines variables comme dans openwindow (borderless) ?
merci d'avance
procédure amélioré pour moi car j'avais besoin d'un texte qui ne bouge pas au tout début ainsi qu'un temps d'attente :
Code : Tout sélectionner
Procedure effet_clavier(attente.d, texte.s, time.d, texte_static.s)
boucle.l = 1
carac.l = Len(texte)
Print(texte_static)
Delay(attente)
Repeat
If boucle > 1
Print(texte_static)
EndIf
Print(Left(texte,boucle))
boucle = boucle + 1
Left(texte,boucle)
Delay(time)
ClearConsole()
Until boucle = carac
Print(texte_static)
Print(Left(texte,boucle))
EndProcedure
Publié : dim. 03/mai/2009 19:10
par Geo Trouvpatou
Salut.
Je ne sais pas si c'est ce que tu veux.
Code : Tout sélectionner
Procedure Open_Window(mesOptions.l)
If OpenWindow(0, 0, 0, 380, 95, "Ma fenêtre", mesOptions)
EndIf
EndProcedure
Open_Window(#PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
Publié : dim. 03/mai/2009 21:56
par Shinao
Enfaite je voudrais qu'ils soient facultatif du genre justement mettre les options ou non. :p
Publié : lun. 04/mai/2009 1:43
par Ollivier
@Shinao
Je t'ai répondu
ici.
En espérant que ça t'aide!
Ollivier
Publié : lun. 04/mai/2009 5:24
par Shinao
Exellent merci ça va m'aider :]
Et pour revenir au thème de ce topic c'est la fonction de :
trouver et afficher un caractère par rapport à sa position en partant de droite ou de gauche, si quelqu'un à créer la procédure ou ça serait bien dans une version futur au moins,
merci pour toutes ces réponses !
Publié : lun. 04/mai/2009 11:24
par cederavic
Voila comment je ferais moi (J'ai essayer de commenter pour expliquer, mais paradoxalement ce sont les choses les plus simple à faire qui sont le plus dur à commenter

)
Code : Tout sélectionner
; Chaine.s : Chaine à écrire
; AutoReturn.b : Optionnel, retour automatique à la ligne, #True par défaut
; Delay.i : Optionnel, temps d'attente en ms entre chaque charactères, 300 par défaut
; Retourne #True quand la procédure est terminée
Procedure.b AutoPrint(Chaine.s, AutoReturn.b = #True, Delay.i = 300)
Repeat
Pos + 1
; Afficher le charactère la position Pos de la chaine Chaine
Print(Mid(Chaine, Pos, 1))
; Attente
Delay(Delay)
; Jusqu'a ce que la position atteigne l'avant dernier charactère
Until Pos = Len(Chaine) - 1
If AutoReturn = #True
; Si AutoReturn = #True alors affichage du dernier charactère avec retour à la ligne
PrintN(Mid(Chaine, Pos + 1, 1))
Else
; Sinon affichage sans
Print(Mid(Chaine, Pos + 1, 1))
EndIf
Delay(Delay)
ProcedureReturn #True
EndProcedure
; Test
OpenConsole()
Delay(1000)
; Sans paramètres optionnels
AutoPrint("Test1")
; Avec le paramètre de retour à la ligne à #False
AutoPrint("Test2 ", #False)
; Avec le paramètre de retour à la ligne à #True et un temps d'attente de 600ms
AutoPrint("Test3", #True, 600)
Repeat : Delay(50) : Until Input()
Publié : lun. 04/mai/2009 15:23
par Shinao
Exellent ! j'ai juste à cherche la définition de la fonction mid est c'est bon , c'est la fonction que je cherchais ! merciii beaucoup ^^