Recherche source pour rechercher une string dans un memo

zvoul Messages postés 2 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 2 décembre 2005 - 2 déc. 2005 à 08:53
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 - 2 déc. 2005 à 11:31
Je recherche des sources pour rechercher des strings dans un
fichier de manière optimisé mais en ayant un bon rapport
vitesse/utilisation processeur et mémoire, sur des fichiers d'une
dizaine de meg.

D'avance merci.


Zvoul
Et vive l'open source !

3 réponses

cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
2 déc. 2005 à 09:52
salut,



la solution à choisire dépend de plusieurs choses:

1) ton fichier est-il trié?

2) Que cherches-tu? cad : tu cherches un string parmis une lsite de
string? ou tu cherches un string commencent/contenant par XXX dans une
list ? recherche basé sur des * et des ?

3) veux tu le premier qui correspond, ou tous ceux qui corresponde?

4) as-tu un index sur le quel tu puisse faire la recherche ? veux-tu (ou peux-tu) en implémenter un?



Avant de faire quoi que ce soit comme optimisation, il faut déjà savoir où optimiser.



Pour gagner en vitesse, tu peux augmenter le buffer de lecture. Vu que
dans ton cas, cela serra surement les accès disque le facteur limitant.
Mais tu dois faire des mesures pour être sur que du gagnes qqch et pas
le contraire!





Loda
0
zvoul Messages postés 2 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 2 décembre 2005
2 déc. 2005 à 10:07
Le fichier n'est pas trié, il s'agit de récupérer une string parmi une
liste de string, le but étant d'obtenir tous les résultats des
occurences, sachant que le mémo évolue toutes les minutes.

Ce programme fonctionnera sur un pc assez vieux. En fait je voudrais
juste un modèle de source, si cela est possible afin de pouvoir gagner
du temps sur la programmation du reste, ceci étant fait sur mon temps
libre. Je paufinerai l'optimisation après.

Zvoul
Et vive l'open source !
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
2 déc. 2005 à 11:31
salut,

pour trouver la première occurence utilise la méthode indexof
ensuite tu scan ton memo et tu rage tes resultats dans un tableau en
sortie index contient le nombre d'occurences.

resultat[0]:=memo1.Lines.IndexOf(chaine);

if resultat[0]<>0 then

begin

index:=1;

for i:=resultat[0] to memo1.Lines.count-1 do

begin

if memo1.Lines[i]=chaine then

begin

resultat[index]:=i;

inc(index);

end;

end;

end;

note que tu peux aussi te passer de la fonction indexof et commencer le scan à 0



@+

jlen
0
Rejoignez-nous