Oui, il y a moyenKwai chang caine a écrit :Bonjour DENY
Merci de ta réponse, mais apparement le code que tu m'a donné renvois le dimensionnement du tableau.
Ce que j'aurais aimé avoir c'est le dernier element inscrit dans le tableau.
Par exemple si un tableau est dimensionné a 100.Et que je lui dit juste que :Code : Tout sélectionner
Dim Tableau(100)
Je voudrais savoir si il y a un autre moyen simple d'obtenir le nombre du dernier enregistrement c'est a dire "2" dans ce cas.Code : Tout sélectionner
Tableau(1) = "premier" Tableau(2) = "second"
Cela evite de rechercher encore des elements dans un tableau alors que on en a jamais écris autant.
Comme ça on gagne du temps dans les boucles qui vident les tableaux dans une listview par exemple.
Code : Tout sélectionner
Dim Tableau.s(100) Tableau(1) = "premier" Tableau(2) = "second" For i = 1 To 100 If Trim(Tableau(i)) = "" i - 1 Break EndIf Next Debug Str(i) + " est le dernier element du tableau"

Code : Tout sélectionner
Declare.L LastString(*Index)
Declare KillString(Tmp.S(1), n.L)
Dim Tartare.S(70)
Tartare(0) = "Aie"
Tartare(1) = "Aioli"
Tartare(2) = "Fines herbes"
Debug "On a le tableau suivant :"
For i = 0 To 3
Debug Str(i) + "= " + Tartare(i)
Next
Debug " "
*Adr = LastString(@Tartare() )
Debug "n° de la dernière chaîne créée : " + Str(*Adr) + " (" + Tartare(*Adr) + ")"
Debug "On défonce " + Tartare(2) + " avec KillString() pas avec Tartare(x) = " + Chr(34) + Chr(34)
KillString(Tartare(), 2)
*Adr = LastString(@Tartare() )
Debug "n° de la dernière chaîne créée : " + Str(*Adr) + " (" + Tartare(*Adr) + ")"
Procedure.L LastString(*Index) ;(Ollivier spéciale dédicace à Kcc)
! xor eax, eax
! mov edi, dword [p.p_Index]
! mov ebx, edi
! mov ecx, 0xFFFFFFFF
! cld
! REPNE SCASD ; >>> Une seule instruction ASM pour For: If PeekL() = 0: ExitFor: EndIf: Next
! mov eax, edi
! sub eax, ebx
! shr eax, 2
! sub eax, 2
ProcedureReturn
EndProcedure
Procedure KillString(Tmp.S(1), n.L)
Tmp(n) = "" ; Fred gère la mémoire
*ptr = @Tmp() ; on récupère l'adresse du tableau
! xor eax, eax ; on va écrire un LONG (=DWORD) = 0
! mov ebx, dword [p.v_n] ; on récupère le n de la chaîne
! shl ebx, 2 ; on le multiplie par 4 (car SizeOf(Long) = 4)
! mov edi, dword [p.p_ptr] ; on pointe le tableau
! add edi, ebx ; on se précise sur le pointeur à killer
! stosd ; on le kille
EndProcedure