et ceci prends du temps !
ce problème est amoindri avec les gosub-return
donc il sont plus rapide

oui ! oui ! c'est coolKwai chang caine a écrit :Bonjour DOBRO
Bah, c'est bien ce que j'ai dit que t'avais dit non ??![]()
Tu m'avais parlé aussi de l'histoire que dans les anciens basic les procedures c'etait gosub, return etc ... et que dans pure on appellait une procedure quelque chose qui etait plutot une instruction.
Donc mon podium il est bon non ???
Ou alors, j'ai encore rien compris comme dab
Code : Tout sélectionner
nbmax.l=0
Dim a.s(100)
nbmax=nbmax+1:a(nbmax)="premier"
nbmax=nbmax+1:a(nbmax)="second"
nbmax=nbmax+1:a(nbmax)="troisième"
Code : Tout sélectionner
For i=1 To nbmax
debug a(i)
Next i
Code : Tout sélectionner
nbmax=0
If ReadFile(1,fichier$)
Repeat
nbmax=nbmax+1
a(nbmax)=ReadString(1)
Until Eof(1)
EndIf
Code : Tout sélectionner
Dim Tablo.s(10)
Tablo(0) = "0"
Tablo(1) = "1"
Tablo(2) = "2"
Tablo(3) = ""
Tablo(4) = "4"
Tablo(5) = ""
Tablo(6) = ""
Tablo(7) = ""
For i = 1 To PeekL(@Tablo() - 8) - 1
If Tablo(i) <> ""
DernierElement = i
EndIf
Next
Debug DernierElement
Code : Tout sélectionner
Dim Tablo.s(10)
Tablo(0) = "0"
Tablo(1) = "1"
Tablo(2) = "2"
Tablo(3) = ""
Tablo(4) = "4"
Tablo(5) = ""
Tablo(6) = ""
Tablo(7) = ""
Procedure DernierElementTablo(Tablo)
Le code du dessus
Endprocedure
Debug DernierElementTablo(Tablo)
Kwai chang caine a écrit :Comment feriez vous pour mettre ce code dans une procedure ?
Code : Tout sélectionner
Procedure UBound(*Array)
ProcedureReturn PeekL(*Array - 8) - 1
EndProcedure
Dim Tablo.s(10)
Tablo(0) = "0"
Tablo(1) = "1"
Tablo(2) = "2"
Tablo(3) = ""
Tablo(4) = "4"
Tablo(5) = ""
Tablo(6) = ""
Tablo(7) = ""
Debug UBound(Tablo())
Je pensais que tu voulais un UBound sous forme de procédure.Kwai chang caine a écrit :Bonjour GNOZAL
Merci de ton aide.![]()
Mais ce n'est pas tout a fait ce que je voulais.
Code : Tout sélectionner
Procedure.l UBound(*Array)
ProcedureReturn PeekL(*Array - 8) - 1
EndProcedure
Procedure.l DernierElementTablo(*Array)
Protected i.l, DernierElement.l, *AddresseChaine
For i = 0 To UBound(*Array)
*AddresseChaine = PeekL(*Array + i * 4)
If *AddresseChaine
If PeekS(*AddresseChaine) <> ""
DernierElement = i
EndIf
EndIf
Next
ProcedureReturn DernierElement
EndProcedure
Dim Tablo.s(10)
Tablo(0) = "0"
Tablo(1) = "1"
Tablo(2) = "2"
Tablo(3) = ""
Tablo(4) = "4"
Tablo(5) = ""
Tablo(6) = ""
Tablo(7) = ""
Debug DernierElementTablo(Tablo())
Code : Tout sélectionner
Procedure.l UBound(*Array)
ProcedureReturn PeekL(*Array - 8) - 1
EndProcedure
Structure StringArray
s.s[0]
EndStructure
Procedure.l DernierElementTablo(*Array)
Protected i.l, DernierElement.l, *TempArray.StringArray
*TempArray = *Array
For i = 0 To UBound(*Array)
If *TempArray\s[i] <> ""
DernierElement = i
EndIf
Next
ProcedureReturn DernierElement
EndProcedure
Dim Tablo.s(10)
Tablo(0) = "0"
Tablo(1) = "1"
Tablo(2) = "2"
Tablo(3) = ""
Tablo(4) = "4"
Tablo(5) = ""
Tablo(6) = ""
Tablo(7) = ""
Debug DernierElementTablo(Tablo())
Code : Tout sélectionner
Procedure.l DernierElementTablo(*Array)
Structure StringArray
s.s[0]
EndStructure
Protected i.l, DernierElement.l, *TempArray.StringArray
*TempArray = *Array
For i = 0 To PeekL(*Array - 8) - 1
If *TempArray\s[i] <> ""
DernierElement = i
EndIf
Next
ProcedureReturn DernierElement
EndProcedure
Dim Tablo.s(10)
Tablo(0) = "0"
Tablo(1) = "1"
Tablo(2) = "2"
Tablo(3) = ""
Tablo(4) = "4"
Tablo(5) = ""
Tablo(6) = "2"
Tablo(7) = ""
Debug DernierElementTablo(Tablo())
Code : Tout sélectionner
Procedure.l UBound(*Array)
ProcedureReturn PeekL(*Array - 8)
EndProcedure
Structure StringArray
s.s[0]
EndStructure
Procedure.l DernierElementTablo(*Array)
Protected i.l, DernierElement.l, *TempArray.StringArray
*TempArray = *Array
For i =UBound(*Array) To 0 Step -1
If *TempArray\s[i] <> ""
DernierElement = i
Break
EndIf
Next
ProcedureReturn DernierElement
EndProcedure
Dim Tablo.s(10)
Tablo(0) = "0"
Tablo(1) = "1"
Tablo(2) = "2"
Tablo(3) = ""
Tablo(4) = "4"
Tablo(5) = ""
Tablo(6) = ""
Tablo(7) = ""
Debug DernierElementTablo(Tablo())