Recherche et remplacement sous dos dans un fichier

x505 Messages postés 28 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 21 octobre 2004 - 20 oct. 2004 à 11:35
x505 Messages postés 28 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 21 octobre 2004 - 21 oct. 2004 à 15:15
Voila..

je ne sais pas par ou commencer,

je dois dans un fichier texte sous dos, chercher une chaine
de caractère et recuperer ce qui suit a celle ci,

du style " CACAO 000022 000222 04444 "

je lance la recherche pour qu'il me trouve CACAO et ensuite
il sauvegarde 000022 000222 04444 dans un fichier.

que je réinjecte en faisant l'inverse dans un autre fichier texte.

mais mon gros souci c'est que tout ceci dois se faire sous dos 6.22
et que je ne vois pas du touut par ou commencer et ni comment
m'y prendre....

J'ecoute toute suggestions

Merci

60 réponses

x505 Messages postés 28 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 21 octobre 2004
21 oct. 2004 à 11:01
j'ai pas tout capter mais apparement avec la fonction GET on peut faire un accès aléatoire au fichier, donc je suppose que cela evite de charger l'intégralité du fichier...

ai je raison ?

je capte pas trop les exemples donné par contre :(
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
21 oct. 2004 à 11:38
Ok, je vais t'expliquer quand même 2, 3 trucs :

tu peux ouvrir un fichier de différente façon, normale (comme on a fait) ou en mode Binaire (Binary)

Chacun de ces modes à ces méthodes :

en Normal : Print, Write, Input
en Binaire : Put, Get

Print & Write servent à écrire dans le fichier, alors que Input sert à récupérer les données du fichier.

Put, Ecrit des données
Get, Récupère les données.

Ensuite il y a les mode d'ouvertures : Read, Write, Input, Output, Random.

Read, Write : sont pour le mode binaire et dise que l'on ouvre en mode Lecture (Read) ou Ecriture (Write).

Input, Output : sont pour le mode normale et dise que l'on ouvre en lecture (vers l'intérieur du programme : Input), ou en écriture (vers l'extérieur du programme : Output). Ce qui est entre parentèse c'est un moyen un peu mémotechnique pour retenir vers où vont les infos, vers le programme Input, ou or du programme : Output.

Random c'est pour dire soit en écriture ou en Lecture. C'est ce truc que l'on appel en mode aléatoire.

Exemple en mode normal :

open "toto.txt" for input as #1

Exemple en mode binaire :

open "toto.txt" for read access binary as #1

Perso il ne met arrivé qu'une fois d'utilisé le mode binaire, mais c'était pour avoir un fichier Temp dans une appli, ce fichier temp contenais un fichier extrait d'une ressource de mon EXE et ensuite je le vidais pour que l'utilisateur n'y ai pas accès et donc ne vois pas les données. mais ça c'est encore autre chose.

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
21 oct. 2004 à 11:40
Sinon, j'ai ré-installé Turbo-C pour voir combien il pouvais prendre en mémoire : j'arrive à ouvrir le fichier et récupérer les infos, mais j'arrive pas à rechercher les infos. Pfff !! je crois que je vais resté sur QB.

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
x505 Messages postés 28 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 21 octobre 2004
21 oct. 2004 à 11:52
Mouais...

donc si j'ai pigé

a moins de savoir faire comment lire le fichier sans le charger en memoire..

il faudrai presque s'amuser a scinder le fichier en plusieurs morceaux, mais là on n'est pas certain qu'il ne coupera pas l'info en deux par hasard..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
21 oct. 2004 à 12:05
Tu as tout compris, alors c'est pour cela que je cherche (un peu de temps en temps) à faire un système qui quand il arrive à 32Ko, il cherche la fin de la ligne mais que si la fin de la ligne est > à 32....Ko (Val max du String), alors il doit s'arrêté à la ligne précédente. Ensuite cette partie sélectionnée est mise dans une variable Tableau et on passe à la suite, ensuite dans la recherche, on va rechercher dans tout les tableaux pour voir si elle y ai, si elle y ai alors on prend tout se qu'il y a après l'infos recherchée + les tableaux suivants. Un sécré bordel, le + chiant ces de découper le fichier sans avoir de OverFlow (Out of memory).

Un variable tableau c'est par exemple :

toto(12) : Toto s'appelle toujours toto mais il contient des tableaux allant de toto(0) à toto(12) soit 13 tableaux qui peuvent contenir chacun 32Ko (dans notre cas), tu va me dire pourquoi ne pas faire une variable à chaque fois ? La réponse est simple : lors de la recherche il faut que l'on énumère un nombre x de variable avec chacune un nom différent la seule possibilité c'est un tableau car dans un tableau on peux faire varier la valeur de l'index sans changer le nom de la variable et aussi en pouvant créer x tableau.

Variable(index) => toto(index)

L'index c'est le numéro du tableau qui dans l'exemple un peu plus haut va de 0 à 12. mais comme la taille du fichier dbf peux varier, l'index peux et doit aussi varier et donc il est possible que l'index aille peut-être jusqu'à 30, 60, 250, etc...

Mais pour un fichier de 64Ko, il n'y aura que 2 tableaux : 0 et 1.
QB, doit pouvoir je pense redimmentionné ce tableau (augmenté l'index) avec ReDim, mais c'est à vérifier. au pire on créra un tableau toto(99) soit 100 tableaux et donc 100 x 32Ko = 3,2Mo.

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
x505 Messages postés 28 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 21 octobre 2004
21 oct. 2004 à 12:31
ok

c'est donc a cela que tu pensais quand tu parlais de faire un tableau

il y cependant un truc qui m'échappe sur cette limitation, car quend tu edite le fichier, l'éditeur n'a aucun problème pour afficher l'intégralité et aussi d'y faire une recherche..

il utiliserai aussi la méthode d'un tableau, a moins que ce ne soit
a cause que la programmation se fasse avec qbasic ?
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
21 oct. 2004 à 12:43
Là par contre aucune idée, mais je pense que c'est QB qui est limité car en ces temps là MS n'était pas encore le chef de tribut car tout le monde n'avait pas un ordi, c'était encore très très rare ! Et donc je pense qu'il l'on limité pour ne pas être concurencé.

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
21 oct. 2004 à 13:11
Je m'excuses de mimiscer dans votre conversation.
Si ton fichier est un fichier texte, c'est à dire fait Ligne par Ligne avec chacune terminée par chr$(13)+chr$(10), pourquoi pas les traiter une par une avec Line Input et faire la recherche Ligne par Ligne.
Sinon en effet t'es obligé de faire un système de Buffer, traité une partie, garder la partie non traitée et relire une autre partie qu'il faut concaténer à la première et là c'est la galère.
Pour info je pense que les basic d'antan ne peuvent pas traiter plus de 64k et un tableau ne pourra jamais dépassé 64k.
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
21 oct. 2004 à 13:14
Merci Gobillot, c'est une très bonne idée, qui simplifie le pb !

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
21 oct. 2004 à 13:22
Mais dans le fichier, y'a pas de ligne terminée par chr$(13), tout est concaténé, c'est la galère !

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
x505 Messages postés 28 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 21 octobre 2004
21 oct. 2004 à 13:31
toutes les idées sont les bienvenues et moi cela m'apprend ;)
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
21 oct. 2004 à 13:33
Dis moi x505, il ne t'ai pas faisable d'avoir le même fichier mais ligne à ligne car là tout est concaténé.

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
x505 Messages postés 28 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 21 octobre 2004
21 oct. 2004 à 13:43
c'est peut etre un autre caractère que chr$(13)

car quand je l'ouvre avec l'editeur de laplink tout s'aligne

je t'envoie par mail, l'editeur pour voir
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
21 oct. 2004 à 13:47
Ok, veux bien.

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
x505 Messages postés 28 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 21 octobre 2004
21 oct. 2004 à 14:11
c'est parti, j'ai mis laplink la total ;)
0
x505 Messages postés 28 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 21 octobre 2004
21 oct. 2004 à 14:22
tu fonctionne sous quelq os ? tu as un pc qui tourne sous dos ?
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
21 oct. 2004 à 14:25
Heu, non mais je vais m'arranger j'ai un soft qui simule les system.

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
x505 Messages postés 28 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 21 octobre 2004
21 oct. 2004 à 14:29
pour l'editeur c'est le.exe

moi j'utilise virtual pc pour la simul
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
21 oct. 2004 à 14:42
me also

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
x505 Messages postés 28 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 21 octobre 2004
21 oct. 2004 à 15:15
j'ai trouvé ce petit truc

http://www.fys.ruu.nl/~bergmann/printdbf.bas

ici

http://www.fys.ruu.nl/~bergmann/basic-faq.html#dbase

et quand je passe le fichier dedans il le detecte comme un fichier
dbase 3

tu en pense quoi ?
0
Rejoignez-nous