Lecture rapide avec TTABLE
Bonjour,
Je désire lire rapidement un fichier de dictionnaire de mots dico.txt (récupéré sur internet) de 4,4 méga-octets et de 364.370 lignes.
Le fichier est de type :
AA
AAS
ABACA
ABACAS
ABACOST
Je suis en delphi 7 et j'utilise un composant TTable.
la lecture est très rapide <1 seconde mais je ne récupère que 2 caractères par enregistrement pourquoi ?
Les instructions :
Table1.FieldDefs[0].precision:=30;
Table1.FieldDefs[0].Size:=30;
n'ont aucun effet.
Autres tests :
- en utilisant directement un TlisBox le chargement prend 37 secondes
- en passant par un fichier XML binaire (DICO.CDS 5 méga) 20 secondes
D'avance merci.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
// *****************************************
procedure TForm1. CHERCHE_DICO;
VAR
FICHIER : STRING;
begin
TRY
FICHIER:=REPERTOIRE_APPLI(TRUE)+'dico.txt';
IF NOT FILEEXISTS(FICHIER) THEN
Begin
Showmessage('Il manque : '+ FICHIER);
CLOSE;
END;
Table1.CLOSE;
Table1.DATABASENAME:= ExtractFilePath(FICHIER);
Table1.TABLENAME:=ExtractFileName(FICHIER);
FORM1.CAPTION:=FICHIER;
Table1.TableType:=ttASCII; //ttDefault;
// Table1.FileType:=DELIMITED LONGINT ; // N'existe pas
Table1.EXCLUSIVE:=FALSE;
Table1.READONLY:=True;
Table1.Filtered:=True;
Table1.FieldDefs[0].DataType:=FTString;
Table1.FieldDefs[0].precision:=30;
Table1.FieldDefs[0].Size:=30;
Table1.ACTIVE:=TRUE;
DBGrid1.Columns[0].Title.caption:='Dictionnaire';
DBGrid1.Columns[0].Width:=Panel2.Width;
DBGrid1.Columns[0].FieldName:='FIELD1';
Edit_NOM_RECHERCHE.SetFocus;
EXCEPT
SCREEN.CURSOR:=CRDEFAULT;
SHOWMESSAGE('ERREUR : '+ FICHIER);
END;
end;
// ***************************************** |
Lecture rapide avec TTable
Dans filter en réalité rien donc je change
Table1.Filtered:=True; en
Table1.Filtered:=False;
Mais j'ai toujours que 2 caractères
Lecture rapide avec TTable
Les guillemets ne change rien.
Mais, de plus en plus bizarre en réalité TTABLE semble se baser sur la première ligne pour définir le nombre de caractères à lire par ligne.
En effet en rajoutant sur la première ligne :
1111111111111111111111111111111111
du fichier dico.txt tous les caractères sont affichés.
Seul problème encore, à partir de la deuxième ligne j'ai 2 traits verticaux en fin de ligne qui représente le retour interligne.