felina1
Messages postés15Date d'inscriptionmardi 24 mai 2005StatutMembreDernière intervention24 septembre 2006
-
24 sept. 2006 à 19:16
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 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.
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 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;