Aide fichiers delphi

felina1 Messages postés 15 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 24 septembre 2006 - 24 sept. 2006 à 19:16
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 - 25 sept. 2006 à 18:13
Bonjour à tous,

Je cumul formation vb6 et delphi. VB6, je m'en sors à peu
près, mais delphi....sans commentaires!
Connaissez vous un bon site avec des
exemples d'applications grâce auxquelles je pourrais mieux comprendre le
fonctionnement. Je ne demande pas la solution mais j''ai toujours mieux appris
avec des exemples. J'ai beau chercher mais je ne trouve pas comment ouvrir un
fichier dont l'adresse est saisie pas l'utilisateur dans une zone texte pour en
compter le nombre de a, b, c, en cliquant sur le bouton approprié...Je sais que
je dois utiliser valuelisteditor pour faire apparaitre les lettres et leur
nombre contenu dans le dit fichier.

Merci par avance de votre aide.

1 réponse

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
25 sept. 2006 à 18:13
Salut,


bon alors il faut créer une nouvelle application avec un TBouton un TEdit et un TMemo avec la propriété ScrollBars à ssBoth

et complèter comme suit :

var
  frmMain: TfrmMain;



implementation




{$R *.DFM}

//Memo1.ScrollBars := ssBoth;
Var
// un tableau d'entier pour comptabiliser les caractères
 CharArray : Array[0..255] of Integer;



Procedure TfrmMain.button1Click(Sender: TObject);
Var fs : TFileStream;
  Buffer    : Array[1..1024] of Byte;
  NbALire, NbLu, TotalLu : LongInt;
  i: Integer;
begin
  // si le fichier n'existe pas on quitte la procédure
  IfNot FileExists(Edit1.Text) Then Exit;
  // remplis le tableau "CharArray" de Zéro
  ZeroMemory(@CharArray, 256);
  // ouverture du fichier en lecture
  FS : = TFileStream.Create(Edit1.Text, fmOpenRead);
  Try
    TotalLu := 0;
    NbALire := SizeOf(Buffer);
    // et on lit par blocs de 1024 caractères et on incrémente
    // la partie du tableau correspondante
    Repeat
      If (TotalLu + NbALire) > FS.Size Then NbALire : = FS.Size - TotalLu;
      NbLu := FS.Read(Buffer, NbALire);
      For I: = 1 to NbLu do Inc(CharArray[Ord(Buffer[I])]);
      TotalLu := TotalLu + NbLu;
    Until TotalLu > = FS.Size;
  Finally
    // on libère
    FS.Free;
  End;
  // efface le memo
  Memo1.Clear;
  // et écrit les nouveaux résultats
  For I := Ord('A') to Ord('z') do Memo1.Lines.Add(Format('%d fois la lettre %s', [CharArray[I], Chr(I)]));
end;



end.

@+
Cirec
0
Rejoignez-nous