x505
Messages postés28Date d'inscriptionsamedi 15 novembre 2003StatutMembreDernière intervention21 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 :(
cboulas
Messages postés2641Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention 8 janvier 201416 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]
cboulas
Messages postés2641Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention 8 janvier 201416 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]
cboulas
Messages postés2641Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention 8 janvier 201416 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]
x505
Messages postés28Date d'inscriptionsamedi 15 novembre 2003StatutMembreDernière intervention21 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 ?
cboulas
Messages postés2641Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention 8 janvier 201416 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]
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 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.