Citation du jour

Description

Un programme qui sort une citation au hasard dans un fichier txt, possibilité d'ajouter ou de supprimer une citation. Utilisation de timer, randomize, date, et création et écriture dans un fichier texte. Rien d'extraordinaire mais ça peut aider un débutant comme moi.
Il y certainement moyen de le simplifier, mais ça marche c'est deja ça :)

Source / Exemple :


uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, ComCtrls, XPMan, StdCtrls, Buttons, jpeg;

type
  TForm1 = class(TForm)
    XPManifest1: TXPManifest;
    Timer1: TTimer;
    Panel1: TPanel;
    Label1: TLabel;
    BitBtn1: TBitBtn;
    Label2: TLabel;
    BitBtn2: TBitBtn;
    Memo1: TMemo;
    Label3: TLabel;
    BitBtn3: TBitBtn;
    Image1: TImage;
    procedure Timer1Timer(Sender: TObject);
    procedure Initialisation(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);

  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;
  nbcitations,n,nb,total: integer;
  fichier: textfile;
  citation: string;

  implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Initialisation(Sender: TObject);
begin
n:=0;
nb:=0;
total:=0;

if not FileExists('citations.txt') then //evite une erreur I/O si le fichier n'existe pas
begin
AssignFile (fichier,'citations.txt');
rewrite (fichier,'citations.txt');
showmessage('Citation du jour n a pas pu trouver citations.txt un fichier vide a été créé');
closefile(fichier);
end;
AssignFile (fichier,'citations.txt');
reset(fichier,'citations.txt');

  while not eof(fichier) do begin //compter les lignes du fichier txt
  readln(fichier,citation);
  n:=n+1;
  end;

CloseFile(fichier);
nb:=n;
total:=n;
randomize; //initialisation du generateur de nombre aléatoire
nbcitations:=random(nb); //nombre aleatoire entre 0 et le nombre de lignes du fichier
AssignFile (fichier,'citations.txt');
reset(fichier,'citations.txt');

  for n:=0 to nbcitations do begin //extraction de la ligne egale au nombre aleatoire généré
  nb:=nb+1;
  readln(fichier,citation);
  end;

readln(fichier,citation);
memo1.Lines.text:=(citation); // Ecriture de la citation dans le memo
label2.caption:='Nombre de citations: '+inttostr(total);
closefile(fichier);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
label1.caption:=timetostr(now);
label3.Caption:=datetostr(now);
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
form1.close;
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
begin
form2.showmodal; 
end;

end.

Conclusion :


Pas mal de tatonnements pour ce programme pour compter les lignes du fichier texte et pour lire une ligne dont le numéro est généré aléatoirement.
Peut être que l'utilisation d'une base de données serait plus efficace, reste à s'y mettre...

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (olivier197578)