Recherche source pour rechercher une string dans un memo
zvoul
Messages postés2Date d'inscriptionmardi 15 juin 2004StatutMembreDernière intervention 2 décembre 2005
-
2 déc. 2005 à 08:53
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 2014
-
2 déc. 2005 à 11:31
Je recherche des sourcespour 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.
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 20093 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!
zvoul
Messages postés2Date d'inscriptionmardi 15 juin 2004StatutMembreDerniè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.
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 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