pour le moment je fais une recherche octet par octet cad. je compare le premier octet de ma chaine a recherche avec le les octets contenus dans mon tableau ( octets(100000) grace a une boucle. si le 1er octet est identique je compare le 2eme octet et ainsi de suite . Si la chaine est trouvé c'est gagné.
Le probleme: j'ai 16 chaines d'octets ( chaque chaine a entre 8 et 32 octets) a rechercher.
la encore la recherche glogale dure environs 30 secondes dans un fichier de 1 Mo.
Ce que je recherche, c'est une methode de mise en memoire et de recherche plus flexible et plus rapide que ma methode qui sauvegarde et recherche octet par octet. ( existerait t'il peut etre une fonction de recherche de "chaine d'octet" comme pour les strings ???)
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 5 sept. 2005 à 13:25
On ne répètera jamais assez: PAS DE TRAITEMENTS LOURDS EN VB, ce n'est pas fait pour cela.
On écrit une dll en natif (C ou ASM) et on l'appelle depuis vb. Codée correctement, une dll devrait traiter au moins 5 Mo/s.
cs_69chris
Messages postés318Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention30 décembre 20051 5 sept. 2005 à 13:40
Salut,
Je pense à un truc similaire, c'est la coloration de fichier dans un éditeur de texte.
J'ai vu une appli Delphi le faire pour traiter un fichier texte pour que des "mots clés" sois coloré dans un contrôle rtf.
La techinque consite à utiliser des jetons (token), un tableau de
référence et faire une lecture séquencielle du fichier. C'est super
chaud à coder mais ça marchais super bien.
A ta place, je chercherais des infos sur "token", "tokenize", "tokenizer".
Chris
N'oubliez pas de cloturer votre post.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200620 5 sept. 2005 à 14:22
Salut, si c'est pour charger tout le fichier d'un coup en mémoire, il existe la fonction input :
dim s as string
dim dnr as byte
dnr = FreeFile
Open chemin & fichier For inpur As #dnr
s= input(lof(dnr),#dnr)
close #dnr
Ensuite, tu analyses ta chaine 's' octet par octet. Question perf, je ne sais pas comment se comporte windows au niveau lecture disque mais je pense qu'à ce niveau ça doit être plus rapide qu'octet par octet.
Bien sùr, reste l'analyse de la chaine en mémoire et il faudra passer par des mid.
Y a-t-il gain sur un fichier de 10 Mo ? Pas sùr en VB. A tester.
-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?