Normalerweise mach ich ja nicht anderer Leute Hausaufgaben.
Aber weil ich grad 1 Stündchen Zeit und Lust hatte:
Hier ein Link
In der AusgabeForm:
1. Const AscIImin = 32 und AscIImax = 122
2. Folgende Arrays:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| { Private-Deklarationen } // Variable für GesamtZahl der Buchstaben Gesamt : LongWord; // AscII-Werte von 32 ' ' bis 122 'z' Anzahl : Array[AscIImin..AscIImax] of Word; // Edits zur Anzeige des Buchstabens aEdit : Array[AscIImin..AscIImax] of TEdit; // Progressbars aProgress : Array[AscIImin..AscIImax] of TProgressBar; // Labels zur Anzeige der Prozente aLabel : Array[AscIImin..AscIImax] of TLabel; |
3. Edits, ProgressBars und Labels erzeugen (Code spar ich mir hier)
4. public Procedure CalcStats, und in dieser...
4.1. AlteWerte Löschen
Quelltext
1: 2: 3: 4: 5: 6:
| { Alte Werte löschen } For i := AscIImin to AscIImax do begin aProgress[i].Position := 0; aLabel[i].Caption := '0%'; end; Gesamt := 0; |
4.2. Zählen
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| { Buchstaben durchgehen und zählen } For i := 0 to Length(Memo1.Text)-1 do begin Found := Ord(Memo1.Text[i]); IF (Found >= AscIImin) and (Found <= AscIImax) then begin Inc(Anzahl[Found]); Inc(Gesamt); end; end; |
4.3. Ausgeben
Quelltext
1: 2: 3: 4: 5: 6:
| { Ausgabe der Werte } For i := AscIImin to AscIImax do begin Prozent := (Anzahl[i] / Gesamt) * 100; aProgress[i].Position := Round(Prozent); aLabel[i].Caption := Format('%f',[Prozent])+'%'; end; |
In der Hauptform brauchst nur einen OpenDialog und einen Button
Quelltext
1: 2: 3: 4: 5: 6:
| If OpenDialog1.Execute then begin StatForm.Memo1.Lines.LoadFromFile(OpenDialog1.FileName); StatForm.Caption := 'Statistik von '+ExtractFileName(OpenDialog1.FileName); StatForm.CalcStats; StatForm.ShowModal; end; |
Viel Spaß damit, und sag mir die Note, die ich dafür bekomm

"Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."