LECTURE FICHIER TEXTE SANS DÉLIMITEURS

Résolu
djainfo Messages postés 4 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 10 juin 2008 - 7 juin 2008 à 16:22
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 13 juin 2008 à 14:41
Bonjour
est qu'il ya une possibilité d'extraire les données a partir d'un fichier text san délimiteurs
vers une base de données access sous delphi .
merçi d'avance.

13 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
10 juin 2008 à 14:16
Ton code n'est pas top mais il devrait marcher quand même :
essaie:

procedure TForm1.Button1Click(Sender: TObject);
var
  Chem, NOM, PRENOM, AGE,Ligne: string;
  F1: TextFile;
begin
  Chem := 'c:\test20\TonFichier.txt';
  AssignFile(F1, Chem);
  Reset(F1);


  repeat
    Readln(F1, Ligne);
    NOM := Copy(Ligne, 1, 10);
    PRENOM := Copy(Ligne, 11, 10);
    AGE := Copy(Ligne, 22, 2);


    ADOQuery1.Close;
    ADOQuery1.SQL.Add('Insert into table1  ');
    ADOQuery1.SQL.Add('Values(''' + (NOM) + ''',''' + (PRENOM) + ''',''' + (AGE) + ''') ');
    ADOQuery1.ExecSQL;


  until Eof(F1);


  CloseFile(F1);
end;

Et si un nom a 18 caractères ?

cantador
3
djainfo Messages postés 4 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 10 juin 2008
8 juin 2008 à 11:07
salut
merci cantador pour la reponse , mais faut voir quoi..
Merci de me donner des indications.
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
8 juin 2008 à 11:23
C'est à toi de donner la réponse !
Je ne peux pas savoir ce que tu veux faire exactement..

cantador
0
djainfo Messages postés 4 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 10 juin 2008
10 juin 2008 à 13:08
Salut
j'ai besoin de sauvegarder les données a partir d'un fichier text dans une base access.
le format du fichier text est du type( nom prenom age) sans délimiteur:
aaaaaa    yyyyyyy    22
ffffffffffffffkkkkkkkkk28
etc...

voici comment je m'y prend :

begin

  AssignFile(Fichier, NOM);
  Reset(Fichier);

  Repeat

    NOM :=Copy(Ligne,1,10);
    PRENOM:=Copy(Ligne,11,10);
    AGE:=Copy(Ligne,21,2);
  
      ADOQuery1.Close;    
      ADOQuery1.SQL.Add('Insert into table1  ');
      ADOQuery1.SQL.Add('Values('''+(NOM)+''','''+(PRENOM)+''','''+(AGE)+''') ');
      ADOQuery1.ExecSQL;

  Until Eof(Fichier) ;
  CloseFile(Fichier);
end;

mais ca marche pas.
0

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

Posez votre question
djainfo Messages postés 4 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 10 juin 2008
10 juin 2008 à 15:42
salut
merçi cantador ça marcher trés bien.
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
10 juin 2008 à 17:45
cantador
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
10 juin 2008 à 17:46
Merci de cliquer sur réponse acceptée.
cantador
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
12 juin 2008 à 20:24
Pour ceux qui ne verraient pas la différence entre le code de djainfo et celui de cantador, c'est simple :
1- le code de Cantador est meilleur
2- djainfo a simplement oublié d'appeler la fonction ReadLn...étourderie ?

May Delphi be with you !
<hr color="#008000" />Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
12 juin 2008 à 20:57
et avec en prime une question subsidiaire qui remet tout ne cause...

cantador
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
12 juin 2008 à 22:18
Oui, en plus...

Je me demande si le code suivant n'est pas encore plus efficace :
type
  TEnr = record
    nom: string[10];
    prenom: string[10];
    age: string[2];
  end;

function TForm1.LoadFile(const aFilename: TFilename): integer;
var
  enr: TEnr;
  F: file of TEnr;
begin
  result := 0;
  if FileExists(AFilename) then
  begin
    AssignFile(F, AFilename);
    try
      Reset(F);
      while not eof(F) do
      begin
        Read(F, enr);
        ADOQuery1.Close;
        ADOQuery1.SQL.Add('Insert into table1  ');
        ADOQuery1.SQL.Add('Values(''' + (enr.NOM) ''',''' + (enr.PRENOM) +
          ''','''
          + (enr.AGE) + ''') ');
        ADOQuery1.ExecSQL;
      end;
      result := FileSize(F);
    finally
      CloseFile(F);
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Chem: string;
begin
  Chem := 'c:\test20\TonFichier.txt';
  ShowMessageFmt('%d enregistrements ajouté(s)', [LoadFile(Chem)]);
end;

A voir...

May Delphi be with you !
<hr color="#008000" />Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
13 juin 2008 à 09:37
type
  TEnr = record
    nom: string[30];
    prenom: string[30]
    age: string[3]
  end;

N'oublions pas les noms de famille longs et
 les centenaires (comme cantador)..

cantador
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
13 juin 2008 à 10:32
Désolé Cantador mais je m'étais basé sur ton code qui donnait une longueur de 10 caractères au nom et au prénom et une longueur de 2 caractères à l'âge.
A djainfo d'adapter les longueurs à ses besoins, bien entendu.
Cantador, on t'adore  et félicitations pour ton âge canonique que j'ignorais

May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
13 juin 2008 à 14:41
Cantador, on t'adore...

mais moi je n'adore pas tout le monde..

Je me souviens bien d'ailleurs de t'avoir lu en train de pester après ceux qui ne répondent pas sur le forum et jurer que l'on ne t'y reprendrai plus..

cantador
0
Rejoignez-nous