ce que j'aimerait c'est que mon programme découpe chaque ligne d'un fichier par mot et les examines.
Savez vous comment utiliser les tokens ?
merci d'avance

Si j'ai bien compris ta question...StringField()
Syntaxe
Resultat$ = StringField(Chaine$, Index, Delimiteur$)
Description
Retourne un champ d'une chaine à l'index spécifié. 'Delimiteur$' est le caractère choisi comme séparateur des champs de la chaine (un seul caractère de longueur autorisée). La première position de 'Index' est 1.
Exemple:
For k=1 To 7
Debug StringField("Je suis une chaine contenant des champs", k, " ")
Next
OS Supportés
Windows, AmigaOS, Linux
Code : Tout sélectionner
For k=1 To 7
Tableau$(k,1)=StringField("Je suis une chaine contenant des champs", k, " ")
Next
Code : Tout sélectionner
Procedure.l CountWord(Chaine.s, Delimiteur.s)
h = 1
For t = 0 To Len(Chaine)
k.s = Mid(Chaine, t, 1)
If k = Delimiteur
h + 1
EndIf
Next
ProcedureReturn h
EndProcedure
test.s = "salut ça va?"
For t = 1 To CountWord(test, " ")
Debug StringField(test, t, " ")
Next
test = "sa_va_et_toi?"
For t = 1 To CountWord(test, "_")
Debug StringField(test, t, "_")
Next
Code : Tout sélectionner
#LMAX = 9999
#VERSION = "Basic (console) v0.4 - 01/02/04"
Dim prog_source.s(#LMAX)
Global buffer.s
Global numero_ligne.l
Global car.b
Procedure affiche_aide()
PrintN("")
PrintN(#VERSION)
PrintN("")
PrintN("Commande en mode immediat :")
PrintN("")
PrintN("RUN LIST NEW LOAD "+Chr(34)+"filename"+Chr(34))
PrintN("BYE SAVE "+Chr(34)+"filename"+Chr(34)+" HELP")
PrintN("")
PrintN("Commandes de programmation :")
PrintN("")
PrintN("PRINT "+Chr(34)+"string"+Chr(34))
PrintN("CLS ")
PrintN("")
EndProcedure
Procedure.s ExtractString(texte.s)
result.s = ""
posit_guillemet.w = FindString(texte,Chr(34),1)
For i = posit_guillemet To Len(texte)
If Mid(texte,i,1)<>Chr(34)
result = result+ Mid(texte,i,1)
EndIf
Next i
ProcedureReturn result
EndProcedure
Procedure StockLigneDeCode()
CallDebugger
numero_ligne = Val(buffer)
pos_debut_code.b = 0
exit_while.b = 0
; supprime la ligne dans la table
If prog_source(numero_ligne)<>""
prog_source(numero_ligne)=""
EndIf
; place le restant de la ligne de code dans la table prog_source()
pos_debut_code=1
While exit_while=0
car =Asc(Mid(buffer,pos_debut_code,1))
If car>=48 And car<=57
pos_debut_code+1
Else
exit_while=1
EndIf
Wend
prog_source(numero_ligne)=Mid(buffer,pos_debut_code,Len(buffer))
EndProcedure
If OpenConsole()
sortie_programme.b = 0
prog_source(#LMAX) = "E" ; "END"
affiche_aide()
While sortie_programme = 0
Print("> ")
buffer = Input()
PrintN("")
car = Asc(UCase(Left(buffer,1)))
Select car
Case Asc("B") ; BYE = quitte le programme
sortie_programme = 1
Case Asc("C")
ClearConsole()
Case Asc("H")
affiche_aide()
Case Asc("L") ; LIST = liste le programme
If UCase(Left(buffer,2)) = "LI"
For numero_ligne = 0 To #LMAX-1
If prog_source(numero_ligne )<>""
PrintN (Str(numero_ligne )+" "+prog_source(numero_ligne )) ;
EndIf
Next numero_ligne
EndIf
If UCase(Left(buffer,2)) = "LO"
nomfichier.s = ExtractString(buffer)
If OpenFile(0,nomfichier)
buffer = ""
While Lof()<>Loc()
buffer = ReadString()
StockLigneDeCode()
Wend
CloseFile(0)
EndIf
EndIf
Case Asc("N")
For numero_ligne = 0 To #LMAX
prog_source(numero_ligne ) = ""
Next numero_ligne
prog_source(#LMAX) = "E" ; "END"
Case Asc("R") ; RUN = execute le programme
CallDebugger
numero_ligne = 0 : interpretation = 0
; tant qu'il y des lignes de code à executer
While interpretation = 0
; recherche dans la table la premiere ligne de code à executer
While Len(prog_source(numero_ligne))=0
numero_ligne+1
;Debug Str(numero_ligne)+" "+prog_source(numero_ligne)
Wend
ligne_de_commande.s = prog_source(numero_ligne)
;; supprime espace avant et apres ligne de commande
ligne_de_commande = LTrim(ligne_de_commande)
ligne_de_commande = RTrim(ligne_de_commande)
car.b = Asc(UCase(Left(ligne_de_commande,1)))
Select car
Case Asc("C")
ClearConsole()
Case Asc("P")
If UCase(Left(ligne_de_commande,3)) = "PRI"
; affiche les caracteres apres les guillemets
texte_a_afficher.s = ExtractString(ligne_de_commande)
PrintN(texte_a_afficher)
EndIf
Case Asc("E")
interpretation = 1
EndSelect
numero_ligne+1
Wend
Case Asc("S")
nomfichier.s = ExtractString(buffer)
If OpenFile(0,nomfichier)
For numero_ligne = 0 To #LMAX
If prog_source(numero_ligne )<>""
WriteStringN(Str(numero_ligne)+prog_source(numero_ligne ) )
EndIf
Next numero_ligne
CloseFile(0)
EndIf
Default
StockLigneDeCode()
EndSelect
Wend
CloseConsole()
EndIf
Code : Tout sélectionner
Procedure.b CaractereSuivant(t.s)
Result.b=0
If Pos <= Len(t)
car = Mid(t,Pos,1)
If Pos < Len(t) ; lit un caractere en avance
cadr = Mid(t,Pos+1,1)
Result = 2
EndIf
Pos = Pos +1
Result=1
EndIf
ProcedureReturn Result
EndProcedure
Code : Tout sélectionner
; INITIALISER
; DECLARER LES FONCTIONS
Declare.l CountWord(Chaine.s, Delimiteur.s)
; TABLEAUX
Dim CODE$(200, 200)
Dim PAGE$(200)
CHAR = 1
; CHARGER LE FICHIER SOURCE
ReadFile(1, "essai.txt")
UseFile(1)
; DECOUPER LES LIGNES
For F = 1 To CountWord(ReadString(), Chr(10))
PAGE$(F) = StringField(ReadString(), F, Chr(10))
Debug PAGE$(F)
Next F
; NBR DE LIGNE DU PROGRAMME
CHARMAX = CountWord(ReadString(), Chr(10))
; EXTRAIRE LES COMMANDES ET LEURS ATTRIBUTS
For L = 1 To CHARMAX
For K = 1 To CountWord(PAGE$(CHAR), ";")
CODE$(L, K) = StringField(PAGE$(L), k, ";")
Debug CODE$(L, K)
Next K
CHAR = CHAR + 1
Next
; _________________________________________________________________________
; FONCTIONS
; _________________________________________________________________________
; FONCTIONS PROPRE A L'EXECUTEUR
Procedure.l CountWord(Chaine.s, Delimiteur.s)
h = 1
For t = 0 To Len(Chaine)
k.s = Mid(Chaine, t, 1)
If k = Delimiteur
h + 1
EndIf
Next
ProcedureReturn h
EndProcedure
; FONCTIONS DE L'UTILISATEUR
Merci de m'aiderprint;salut
print;ca va?
Code : Tout sélectionner
; DECOUPER LES LIGNES
For F = 1 To CountWord(ReadString(), Chr(10))
PAGE$(F) = StringField(ReadString(), F, Chr(10))
Debug PAGE$(F)
FileSeek(F)
Next F
Code : Tout sélectionner
Declare.b OpenScript(ID.l, FileName.s)
Declare CloseScript(ID.l)
Declare.b VerifScript(ID.l)
Declare.b ExecuteScript(ID.l)
Declare.b ExamineLine(Line.s)
Declare.b DoCommand(Command.s, Argument.s)
Declare Command_MSG(Argument.s)
;[OpenScript]
;Ouvre un script FileName.s
;Valeur retournée :
; 0 = Impossible d'ouvrir le script FileName.s
; 1 = Script invalide
; 2 = Ouverture du script effectuée
;Note : l'ID sera aussi utiliser par OpenFile
Procedure.b OpenScript(ID.l, FileName.s)
Result.b
Result = OpenFile(ID, FileName)
If Result = 0
ProcedureReturn 0
Else
Result = VerifScript(ID)
EndIf
ProcedureReturn Result
EndProcedure
;[CloseScript]
;Ferme le script ID préalablement ouvert avec OpenScript
Procedure CloseScript(ID.l)
CloseFile(ID)
EndProcedure
;[VerifScript]
;Verifi la validité du script ID en regardant s'il y a bien le nom de l'auteur et la version du script
;Valeur retournée :
; 1 = Script invalide
; 2 = Ouverture du script effectuée
Procedure.b VerifScript(ID.l)
Result.b
CurrentLine.s
UseFile(ID)
Repeat
CurrentLine = ReadString()
If Trim(UCase(StringField(CurrentLine, 1, "="))) = "AUTOR" : Result + 1 : EndIf
If Trim(UCase(StringField(CurrentLine, 1, "="))) = "SCRIPTVERSION" : Result + 1 : EndIf
Until Eof(ID) Or Result = 2
FileSeek(0)
ProcedureReturn Result
EndProcedure
;[ExecuteScript]
;Execute le script ID
;Valeur retournée :
; 0 = Script exécuté avec succes
; 1 = Commande inconnue
Procedure.b ExecuteScript(ID.l)
Result.b
CurrentLine.s
UseFile(ID)
Repeat
CurrentLine = ReadString()
Result = ExamineLine(CurrentLine)
Until Eof(ID) Or Result > 0
EndProcedure
;[ExamineLine]
;Examine la ligne Line.s et effectu les commandes
;Valeur retournée :
; 0 = Ligne examinée et commande effectuée avec succes
; 1 = Commande inconnue
Procedure.b ExamineLine(Line.s)
Command.s
Argument.s
Command = Trim(UCase(StringField(Line, 1, "=")))
Argument = Trim(StringField(Line, 2, "="))
ProcedureReturn DoCommand(Command, Argument)
EndProcedure
;[DoCommand]
;Execute la command Command.s avec l'argument Argument.s
;Valeur retournée :
; 0 = Commande exécutée avec succes
; 1 = Commande inconnue
Procedure.b DoCommand(Command.s, Argument.s)
Result.b
Select Command
Case "MSG"
Command_MSG(Argument)
Case "AUTOR"
Case "SCRIPTVERSION"
Case ""
Default
Result = 1
EndSelect
ProcedureReturn Result
EndProcedure
;[Command_MSG]
;Exécute la commande MSG (MessageRequester)
;Syntax de la commande : MGS = Titre Message
Procedure Command_MSG(Argument.s)
Title.s = Trim(StringField(Argument, 1, " "))
MSG.s = Trim(StringField(Argument, 2, " "))
MessageRequester(Title, MSG, 0)
EndProcedure
Code : Tout sélectionner
;[Command_MSG]
;Exécute la commande MSG (MessageRequester)
;Syntax de la commande : MGS = Titre Message
Procedure Command_MSG(Argument.s)
Title.s = Trim(StringField(Argument, 1, " "))
MSG.s = Trim(Mid(Argument, Len(Title) + 1, Len(Argument)))
MessageRequester(Title, MSG, 0)
EndProcedure