Nein, sowas ist es auch nicht. Hier mal der passende Code:
Delphi-Quellcode:
procedure TFprob.Draw(
var Aveg: Tvegenere; start,step,shift: integer; img: Timage);
var
w,h: integer;
dx: real;
lochweite: real;
i: integer;
x1: integer;
max: real;
maxh: integer;
dy: real;
s: real;
alist:
array[1..26]
of real;
str:
string;
j: integer;
o: integer;
begin
w:= img.Width;
h:= img.Height;
with img.Canvas
do
begin
brush.Style:=bssolid;
brush.Color:= clwhite;
pen.Color:= clwhite;
rectangle(0,0,w,h);
pen.Color:=clblack;
pen.Width:=2;
lochweite := 3;
dx:= (w-40-round(26*lochweite) )/26;
// Breite der Säulen
// Einzeichnen der Verteilung aus dem Text:
// Erstellung einer Liste für die Verteilung jedes step.ten Buchstaben
// Liste wird gelöscht:
for i:=1
to 26
do
alist[i]:=0;
str:= veg.getcode;
i:=start;
// Die Liste wird erstellt:
while i<=length(str)
do
begin
o:=ord(upcase(str[i]))-ord('
A')+1;
alist[o]:=alist[o]+1;
inc(i,step);
end;
// Der häufigste Buchstabe wird gesucht:
max:=0;
for i:=1
to 26
do
if alist[i]>max
then max:=alist[i];
// Berechnung der Maße der Säulen;
try
maxh:=h-60;
// Höhe der größten Säule
dy:= maxh/max;
except
// Eat this Exception;
exit;
end;
// Säulen werden gezeichnet
for i:=1
to 26
do
begin
pen.Color:=clblack;
Brush.Color:=clblack;
brush.style:=bsDiagCross;
j:= i+shift;
if j>26
then dec(j,26);
s:= alist[j]*dy;
// Höhe der Säule
x1:=20+round((i-1)*(dx+lochweite));
rectangle(rect(x1,round(h-(s+30)),round(x1+dx),round(h-30)));
str:=chr(j+ord('
A')-1);
textout(x1+3,h-20,str);
end;
// Die Säulenhöhe wird für den Normschatten neu errechnet
// Der häufigste Buchstabe wird gesucht:
max:=0;
for i:=1
to 26
do
if list[i]>max
then max:=list[i];
// Berechnung der Maße der Säulen;
try
maxh:=h-60;
// Höhe der größten Säule
dy:= maxh/max;
except
exit;
end;
// Normschatten
if cbshadow.checked
then
begin
for i:=1
to 26
do
begin
pen.Width:=3;
pen.Color:=clred;
brush.Color:=clred;
brush.style:=bsHorizontal;
// Nur Rahmen
s:= list[i]*dy;
// Höhe der Säule
x1:=20+round((i-1)*(dx+lochweite));
rectangle(rect(x1,round(h-(s+30)),round(x1+dx),round(h-30)));
end;
end;
// of shadow;
end;
// of image.canvas
end;
// veg ist eine selbstgeschriebene Klasse und img ist ein TImage.
Insgesamt ist der Code Teil
dieses Programms.
Erwarte das Beste und bereite dich auf das Schlimmste vor.