van6071
Messages postés20Date d'inscriptionmercredi 8 mars 2006StatutMembreDernière intervention15 mars 2006
-
11 mars 2006 à 16:12
f0xi
Messages postés4204Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 2022
-
13 mars 2006 à 07:34
Bonjour, c'est encore moi.
Voila mon soucis:
j'ai un fichier texte comme ceci : 20060303;5;44;10;8;3;3;5
Mon problème c'est que je récupère bien les valeurs sauf la dernière.
En clair je récupère 20060303, 5, 44, 10, 8, 3, 3, (j'ai mis des
virgules pour que se soit plus lisible) mais pas le 5 car je dois
avoir le controle fin de ligne qui m'emm..... enfin je pense !!
Comment je peut savoir lorsque je suis sur le fin de ligne ou si j'ai un autre problème ?
van6071
Messages postés20Date d'inscriptionmercredi 8 mars 2006StatutMembreDernière intervention15 mars 2006 11 mars 2006 à 17:05
Merci, chez moi ça compile sans problème (je n'ai pas passé tout le code : trop long c'est pour ça que tu ne peux pas compiler). J'ai essayé ta méthode mais ça ne change rien. Merci d'avoir essayé
A+
van6071
Messages postés20Date d'inscriptionmercredi 8 mars 2006StatutMembreDernière intervention15 mars 2006 11 mars 2006 à 17:31
En fait je crois que mon problème est plus simple. Tel que ma boucle est ecrite je ne "déclanche" pas le dernier else puisque je n'ai plus de ; après le dernier caractère !!!
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 11 mars 2006 à 17:45
la fonction copy tel que tu l'écris ne se compile pas
voici ce que dit l'aide
function Copy(S; Index, Count: Integer): string;
Description
S est une expression de type chaîne ou tableau dynamique. Index et
Count sont des expressions de type entier. Copy renvoie une sous-chaîne
ou un sous-tableau contenant Count caractères ou éléments en partant de
S[Index]. La sous-chaîne ou le sous-tableau est une copie unique
(c'est-à-dire qu'il/elle ne partage pas de mémoire avec S ; même
si les éléments du tableau sont des pointeurs ou des objets, ils ne
sont pas copiés non plus).
Si Index est plus grand que la taille de S, Copy renvoie une chaîne ou un tableau vide.
Si Count indique plus de caractères ou d'éléments de tableau que le
nombre disponible, seuls les caractères ou les éléments compris entre
S[Index] et la fin de S sont renvoyés.
comme tu le vois il faut 3 paramètres et ici copy(lig[i],1) tu n'en transmets que 2 donc si tu as réecrit cette fonction vérifie qu'elle fonctionne
f0xi
Messages postés4204Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202234 13 mars 2006 à 07:12
je me suis poser la question des performances ...
c'est simple,
pour 10 000 entrées, write < 16 ms ... read <32ms
et le poid du fichier = 157Ko contre 310Ko en texte ...
pour 100 000 entrées, write < 125 ms ... read < 312 ms
et le poid du fichier = 1 563Mo contre 3 098Mo en texte ...
c'est tellements rapide que ça m'etonne moi meme!
et ouai ... avant je faisait du code pourris, mes programmes etait lourdingue est sans interets ...
depuis que florenth, kenavo, grandvizir, delphiprog, cirec, jlen et les autres sont entrés dans ma vie ...
je fais des routines optimisées, rapides, legeres comme l'air ...
merci delphifr d'avoir fait de moi un bon...
<hr size="2" width="100%">La theorie c'est quand on sait tout, mais que rien ne fonctionne.
La pratique c'est quand tout fonctionne, mais que personne ne sait pourquoi.
<hr>
f0xi
Messages postés4204Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202234 13 mars 2006 à 07:34
aller, c'est l'heure des calculs,
vus qu'on mets 10*T de temps pour 10*N entrées et que le poids du fichier est egalement de 10*P pour 10*N
pour 1M entrées : w<1.2sec, r<3.1sec, p<10.5Mo
pour 100M entrées : w<11s, r<30s, p<1Go
pour 1G entrées : w<1m35s, r<2m30s, p<10Go
(données purrement theorique car faut pas imaginer la tete du tableau dynamique avec 1Giga d'entrées ... )
l'interet quand meme, d'ecrire directement les données dans leur type et non en texte est que :
en texte :
date = 10 octets
numeros de 0 a 9 = 1 octet * 7
numeros de 10 a 99 = 2 octets * 7
sept point virgule = 7 octets
un eoln = 2 octets
soit 26 octets minimum et 35 octets maximum
en "binaire"
date = 8 octets
numeros de 0 a 99 = 1 octet * 7
une fin de donnée = 1 octet (h00)
soit 16 octets fixe...
soit un gain de 10 a 19 octets sur le fichier texte, ce qui n'est tout de meme pas negligeable, sans compter la facilitée pour lire et ecrire les données.
<hr size="2" width="100%">La theorie c'est quand on sait tout, mais que rien ne fonctionne.
La pratique c'est quand tout fonctionne, mais que personne ne sait pourquoi.
<hr>