ProcedureDLL .s RepeterChaine(Chaine.s, Multiplicateur.i)
; répète une chaîne un nombre donné de fois
Protected Resultat.s
If Multiplicateur > 0
Protected Longueur_chaine.i, Nouvelle_longueur.i, i.i
Protected *Pointeur_resultat
Longueur_chaine = Len(Chaine)
Nouvelle_longueur = Multiplicateur *Longueur_chaine
Resultat = Space(Nouvelle_longueur)
*Pointeur_resultat = @Resultat
For i = 1 To Multiplicateur
PokeS(*Pointeur_resultat, Chaine)
If i < Multiplicateur
CompilerIf #PB_Processor_x64
*Pointeur_resultat +(Longueur_chaine * 2)
CompilerElse #PB_Processor_x86 ; Erreur de syntaxe
*Pointeur_resultat +Longueur_chaine
CompilerEndIf
EndIf
Next i
Else
Resultat = ""
EndIf
ProcedureReturn Resultat
EndProcedure
Dernière modification par Micoute le mar. 18/déc./2012 9:11, modifié 1 fois.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Et bien, j'en ai encore des chose à apprendre, en tous cas merci beaucoup et grâce à toi, je me coucherai moins bête, ce soir !
J'aurais pu voir que ce n'était un CompilerElseIf et bien mieux, maintenant j'utilise CompilerSelect.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !