INSTRREV

Signaler
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
-
Messages postés
52
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
24 mars 2017
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/29890-instrrev

Messages postés
52
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
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
27
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).
Afficher les 19 commentaires