Le but de cette fonction est de trouver la position (X, Y) d'un mot dans une TStrings (Tmemo, TListBox, TComboBox...)
Cette fonction s'utilise comme la fonction delphi "pos", et le résultat renvoyé est un TPoint.
Remarques:
Les TStrings étant des tableaux de chaînes dont l'indice commence à 0, je renvoie donc 0 si le mot se trouve sur la 1ere ligne, n-1 s'il se trouve sur la ligne n°n, et -1 s'il n'a rien trouvé.
Chaque chaine de la TString est un tableau dont l'indice commence à 1. Je renvoie donc 1 si le mot commence en début de chaine... et 0 si rien n'a été trouvé
Donc X et Y commencent respectivement à 1 et 0 (rien ne vous empêche de modifier ca, si vous voulez que ce soit plus "cohérent", j'ai personnellement préféré respecter la logique Delphi, surtout que les données sont directement utilisables telles qu'elles si on doit retravailler la TStrings)
Je vous propose cette fonction parceque j'en avais besoin et que finalement, j'ai trouvé une facon astucieuse de répondre au problème.
Source / Exemple :
function PosInStrings(Substr: string; s : TStrings) : TPoint;
var SLtemp : TStringList;
p : Integer;
begin
p := Pos(Substr, s.Text);
if p>0 then begin
SLtemp := TStringList.Create;
try
SLtemp.Text := Copy(S.Text, 1, p);
RESULT.Y := SLtemp.Count-1;
RESULT.X := Pos(Substr, s[RESULT.Y]);
finally
SLtemp.Free;
end;
end
else begin
RESULT.X := -1; // TStrings commencent à 0
RESULT.Y := 0; // string commence à 1
end;
end;
Conclusion :
Si vous connaissez une autre manière de faire, n'hésitez pas à m'en faire part.
Et n'hésitez pas à laisser des 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.