Instrrev

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 828 fois - Téléchargée 37 fois

Contenu du snippet

La fonction InstrRev recherche la position d'un caractère commencant par la fin

Exemple d'utilisation: showmessage(inttostr(Instrrev(edit1.text, 'a'))); // edit1 contient 'alalalalal'

==> La fonction renvoi 9 (c'est le dernier a)

Source / Exemple :


function InstrRev(Src:string; s: Char): integer;
  var B:integer;
begin
result := -1;
if length(src) = 0 then exit;
if length(s) = 0 then exit;

for B:= length(src) downto 0 do
  if src[B] = s then
    break;
    result := B;
end;

Conclusion :


merci a jinh68 pour ses conseils :)

A voir également

Ajouter un commentaire

Commentaires

Messages postés
49
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
24 mars 2017

Le 1er test est également inutile car il est fait par le 1er test de boucle.
De plus, si le résultat doit être -1 lorsque le car. n'est pas trouvé il est préférable de faire:

function InstrRev(Src:string; s: Char): integer;
var B:integer;
begin
result := -1;//pour pas trouvé
for B:= length(src) downto 1 do
if src[B] = s
then begin
result := B;//rang changé avant la sortie de boucle
break;
end;
end;

ou bien pour éviter une attribution inutile:

function InstrRev(Src:string; s: Char): integer;
var B:integer;
begin
for B:= length(src) downto 1 do
if src[B] = s
then begin
result := B;//rang changé avant la sortie de boucle
EXIT;//trouvé, on sort de la function
end;
//on arrive ici seulement si car. pas trouvé ou src vide
result := -1
end;
Messages postés
78
Date d'inscription
jeudi 17 février 2005
Statut
Membre
Dernière intervention
26 décembre 2005

mdr delphiprog sur le coup je n'avais pas fait attention ...
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
28
if length(s) = 0 then exit;

Voilà un test bien inutile puisque S est du type Char et que le type Char a une longueur de 1, quelque soit son contenu.
Messages postés
215
Date d'inscription
mardi 29 juillet 2003
Statut
Membre
Dernière intervention
1 septembre 2006

Non deja c'est

for B := Length(Src) downto 1,oui j'ai merdé, les strings sont indexés à 1 ;).

Dans le cas ou le caractere n'est pas la ca donnera 0 du coup.

Juste une petite remarque sur ton source.Ne repete pas length(src) plusieurs fois,stocke le au début,sinon ca réévalue à chaque fois(pas avc les optimisations de Delphi mais bon).
Messages postés
78
Date d'inscription
jeudi 17 février 2005
Statut
Membre
Dernière intervention
26 décembre 2005

merde lol
Afficher les 19 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.