IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Pascal Discussion :

Connaître le nombre d'enregistrements par un clic droit


Sujet :

Contribuez Pascal

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 176
    Points
    176
    Par défaut Connaître le nombre d'enregistrements par un clic droit
    Bonjour, un petit source

    il y a sans doute mieux mais je laisse à votre appréciation ..

    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
     
    {
    ce petit programme testé en FreePascal pour compter le nombre
    d'enregistrements dans un fichier texte
     
    principe le programme est stocké sur de disque dur
    disons c:\pgmutil\nbrenr.exe
     
    ensuite un raccourci est mis dans le dossier 
    C:\Documents and Settings\utilisateur\SendTo\
     
    pour utiliser clique droit sur un fichier texte
    et envoyer vers le raccourci ...
     
    Source libre de droits par JoseF sur http://www.developpez.com le 08/12/2007 
     
     
    fonctionne si compilé avec FreePascal 
    testé avec "Free Pascal Compiler version 1.0.6 [2002/04/23] for i386"
    sous windows 32 bits
     
    }
     
    program nbrenr;
    	var a,n	:string;
    		i:integer;
    		f:TextFile;
     
    begin
    	i:=0;
    	assignfile(f,ParamStr(1));
    	reset(f);
    	while not eof(f) do
    	begin
    		readln(f,a);
    		i:=i+1;
    	end;
    	closefile(f);
    	str(i,n);
    	Writeln('dans le fichier ',ParamStr(1));
    	Writeln('il y a ',n,' enregistrements. ');
    	Writeln;
    	Write('Enter pour quitter ...');
    	Readln;
    end.
    Un bon exemple vaut mieux qu'une longue explication confuse...

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 941
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 941
    Points : 5 652
    Points
    5 652
    Par défaut
    Gio,

    Pour un fichier texte, on appelle ça des lignes, pas des enregistrements.

    Il faudrait sécuriser le code : que se passe-t-il si le fichier n'existe pas ? Si l'ouverture échoue ? etc.

    Tu peux te passer de la chaine n (curieux nom pour une chaine ), en écrivant directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	closefile(f);
    	{ str(i,n); }
    	Writeln('dans le fichier ',ParamStr(1));
    	Writeln('il y a ',i,' enregistrements. ');
    	Writeln;
    	Write('Enter pour quitter ...');
    	Readln;
    Si les cons volaient, il ferait nuit à midi.

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 176
    Points
    176
    Par défaut
    bonjour,

    Merci de tes remarques.

    je vais essayer d'y répondre

    Pour un fichier texte, on appelle ça des lignes, pas des enregistrements.

    Si j'ai mis "enregistrement" c'est que dans le cadre de mon travail, on appelle ça des enregistrements et non lignes (déformation professionnelle)
    mais c'est une bonne remarque.

    Il faudrait sécuriser le code : que se passe-t-il si le fichier n'existe pas ? Si l'ouverture échoue ? etc.
    Le principe est d'utiliser "envoyer vers" via le clic droit de la souris, or en principe le fichier existe... (sauf si entre temps il a disparu ou été renommé...)
    j'avais mis ce code et puis ôté suite à ma réflexion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if Paramcount=0 then 
    	begin
    		writeln('pas de fichier selectionné... Ce progamme ne doit pas être lancé seul...');
    		Writeln;
    		Write('Enter pour quitter ...');
    		readln;
    		exit;
    	end;
    c'est vrai je ne teste pas si l'ouverture échoue...
    je ne teste pas non plus s'il s'agit bien d'un fichier pur texte,
    si on envoie plusieurs fichiers...
    etc...

    Tu peux te passer de la chaine n (curieux nom pour une chaine ), en écrivant directement
    [..]
    Writeln('il y a ',i,' enregistrements. ');
    oui j'aurai du mettre C comme chaine
    mais j'ai mis n car comme nombre.. car c'est un nombre d'enregistrements (de lignes !) que je restitue. Mais c'est transparent pour l'utilisateur

    pour ce qui est de du code c'est aussi un reflexe Lazarus/Delphi
    exemple
    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
    procedure TForm1.Button1Click(Sender: TObject);
     var i:integer;
         n:string;
    begin
         i:=100;
         str(i,n);
      ShowMessage('il y a'  + n +' enreg.'); // bonne syntaxe
     
    //ShowMessage('il y a ',i,' enreg.');
    //Unit1.pas(35,39) Error: Wrong number of parameters specified for call to "ShowMessage"
     
    // ou 
     
    //ShowMessage('il y a'  + i +' enreg.');
    //Unit1.pas(37,18) Error: Incompatible types: got "Constant String" expected "LongInt"
     
    end;
    mais j'aurais du écrire dans mon source
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Writeln('il y a '+n+' enregistrements. ');
    cela aurait été plus logique

    merci pour ta contribution

    marrant pour un petit truc, un mini utilitaire, que j'ai écris en 10 minutes env ...
    Un bon exemple vaut mieux qu'une longue explication confuse...

Discussions similaires

  1. Compter le nombre d'enregistrements par minute
    Par Kosti dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/06/2008, 16h58
  2. Réponses: 5
    Dernier message: 03/02/2008, 19h14
  3. [C#] Connaître le nombre d'enregistrements d'un DataReader
    Par luimême dans le forum Windows Forms
    Réponses: 3
    Dernier message: 07/08/2007, 11h22
  4. Limiter le nombre d'enregistrements par groupe
    Par atoff dans le forum Access
    Réponses: 2
    Dernier message: 10/01/2007, 10h26
  5. XMLGram et nombre d'enregistrements par page
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 7
    Dernier message: 26/02/2003, 13h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo