J'ai converti un fichier Excel en fichier Texte en vue de créer une procédure qui me donnerait les valeurs des cellules du fichier texte.
A la lecture du fichier texte j'ai constaté que les variables recherchées étaient séparées par un caractère chr(9).D'où l'idée de trouver les valeurs cherchées par la lecture de la ligne caractère par caractère jusqu'à la position 1 -1 de chr(9) .ensuite de la position 1+1 jusqu'à la position 2 -1 de chr(9) etc. jusqu'à ma ma sième variable.
J'étais heureux mais j'ai vite déchanté cela n'allait plus pour les autres lignes.
Pourquoi? Où est mon erreur? c'est ce que je vous demande ou alors comment faire ?
Voici mon code

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
program joueursH;
uses dos,crt,printer;
 
var
   f:text;
   i,j,k,l,x,y:integer;
   z,ch:char;
   nclub,lf,nomjou,prenom,clt,affi:string;
   sep:array[1..40] of integer;
 
 
begin
   {initialisation des variables }
   nclub:='';lf:='';nomjou:='';prenom:='';clt:='';affi:='';x:=0;y:=0;l:=0;
   z:=chr(9);
   {ouverture du fichier texte issu du fichier Excel }
   assign(f,'e:\tennis\advers.txt');
   {$i-} reset(f) {$i+}:
   if ioresult=0 then 
   begin
      writeln('le fichier n'existe pas');ch:=readkey;
      halt;
   end;
   while not eof(f) then
   begin
      {lecture d'une ligne.Ce que je cherche c'est d'accéder à une  ligne     déteminée selon la valeur de lf }
      readln(f,ligne);l:=length(ligne);
      for j:=1 to l do
      begin
         x:=x+1;
         if ligne[j]=z then
         begin
            y:=y+1;
            sep[y]:=x; {détermination des positions de z }
         end;
      end;
    for k:=1 to sep[1]-1 do
    begin
        nclub:=lnclub+ligne[k]; attribution de la variable nclub par lecture caractère par caractère}
    end;
    {idem pour la variable lf de la position sep[1]+1 à sep[2]-1}
    {idem pour nomjou de sep[2]+1 à sep[3]-1}
    {idem pour prenom de sep[3]+1 à sep[4]-1}
    {idem pour clt de sep[4]+1 à sep[5]-1}
    {idem pour affi de sep[5]+1 à l (longueur de la chaine }
    {mise à nul des variables}
    for k:=1 to 6 do sep[k$:=0;
    nclub:='';lf:='';nomjou:='';prenom:='';clt:='';affi:='';l:=0;
    writeln(nclub,' ',lf,' ',nomjou,' ',prenom,' ',clt,' ',affi);
    ch:=readkey;
    { j'ai des valeurs après traitement de la première ligne}
    end;   
    close(f);
end.
Comme dit plus haut mon programme tourne pour la première ligne mais aucune valeur pour la suite bien que je lis les longueurs de ligne pour tout mon fichier.


Merci à tous ceux qui m'aideront à résoudre ce problème.

A très bientôt ,j'espère ,sur le forum

Rogerone