Coltlac
22-11-2012, 01:11:24
Buenas tardes, soy nuevo en el foro, y tambien soy nuevo en delphi
tengo un problema, tengo que hacer un programa que abra y lea un archivo de texto y posteriormente con esa informacion debe crear un histograma de barras con la frecuencia con la cual aparecen las letras en el archivo, y lo hice pero el histograma no muestra la informacion correcta de la letras, les anexo mi codigo, espero me puedan ayudar, gracias
procedure TForm2.Button1Click(Sender: TObject);
var
i,divs,longX,longY : Integer;
nextX,nextY : Integer;
alto,largo : Integer;
Color : TColor;
nx,ny : Integer;
begin
divs:=0;
alto:=Image1.Height;
largo:=0;
nx:=760;
ny:=Image1.Height;
{
if Limpiar then begin
nx:=760;
for i := 0 to cant do begin
Canvas.TextOut(nx,ny,'');
nx:=nx-longX;
end;
Limpiar:=False;
end;
for i := 0 to Length(Letras) do begin
case Letras[i] of
'z': inc(Minusculas[0]);
'y': inc(Minusculas[1]);
'x': inc(Minusculas[2]);
'w': inc(Minusculas[3]);
'v': inc(Minusculas[4]);
'u': inc(Minusculas[5]);
't': inc(Minusculas[6]);
's': inc(Minusculas[7]);
'r': inc(Minusculas[8]);
'q': inc(Minusculas[9]);
'p': inc(Minusculas[10]);
'o': inc(Minusculas[11]);
'ñ': inc(Minusculas[12]);
'n': inc(Minusculas[13]);
'm': inc(Minusculas[14]);
'l': inc(Minusculas[15]);
'k': inc(Minusculas[16]);
'j': inc(Minusculas[17]);
'i': inc(Minusculas[18]);
'h': inc(Minusculas[19]);
'g': inc(Minusculas[20]);
'f': inc(Minusculas[21]);
'e': inc(Minusculas[22]);
'd': inc(Minusculas[23]);
'c': inc(Minusculas[24]);
'b': inc(Minusculas[25]);
'a': inc(Minusculas[26]);
'Z': inc(Mayusculas[0]);
'Y': inc(Mayusculas[1]);
'X': inc(Mayusculas[2]);
'W': inc(Mayusculas[3]);
'V': inc(Mayusculas[4]);
'U': inc(Mayusculas[5]);
'T': inc(Mayusculas[6]);
'S': inc(Mayusculas[7]);
'R': inc(Mayusculas[8]);
'Q': inc(Mayusculas[9]);
'P': inc(Mayusculas[10]);
'O': inc(Mayusculas[11]);
'Ñ': inc(Mayusculas[12]);
'N': inc(Mayusculas[13]);
'M': inc(Mayusculas[14]);
'L': inc(Mayusculas[15]);
'K': inc(Mayusculas[16]);
'J': inc(Mayusculas[17]);
'I': inc(Mayusculas[18]);
'H': inc(Mayusculas[19]);
'G': inc(Mayusculas[20]);
'F': inc(Mayusculas[21]);
'E': inc(Mayusculas[22]);
'D': inc(Mayusculas[23]);
'C': inc(Mayusculas[24]);
'B': inc(Mayusculas[25]);
'A': inc(Mayusculas[26]);
end; //end case
end; //end for
for i := 0 to 26 do begin
Total[i]:=Mayusculas[i]+Minusculas[i];
if Total[i]<>0 then
inc(divs);
end;
longX:=round(Image1.Width/divs);
for i := 0 to 26 do begin
if Total[i]<>0 then begin
nextX:=longX+largo;
nextY:=Total[i]*5;
Color:=RGB(Random(255),Random(255),Random(255));
Image1.Canvas.Brush.Color:=Color;
Image1.Canvas.Rectangle(largo,Image1.Height,nextX,nextY);
Font.Color:=clBlack;
Brush.Style:=bsClear;
Font.Size:=8;
Canvas.TextOut(nx,ny,Let[i]);
nx:=nx-longX;
largo:=nextX;
alto:=nextY;
inc(cant);
end;
end;
Limpiar:=True;
end; //end evento
procedure TForm2.FormCreate(Sender: TObject);
begin
Memo1.Text:='';
Image1.Canvas.Pen.Color:=Clblack;
Image1.Canvas.Brush.Color:=ClWhite;
Image1.Canvas.Rectangle(0,0,Image1.Width,Image1.Height);
end;
end.
tengo un problema, tengo que hacer un programa que abra y lea un archivo de texto y posteriormente con esa informacion debe crear un histograma de barras con la frecuencia con la cual aparecen las letras en el archivo, y lo hice pero el histograma no muestra la informacion correcta de la letras, les anexo mi codigo, espero me puedan ayudar, gracias
procedure TForm2.Button1Click(Sender: TObject);
var
i,divs,longX,longY : Integer;
nextX,nextY : Integer;
alto,largo : Integer;
Color : TColor;
nx,ny : Integer;
begin
divs:=0;
alto:=Image1.Height;
largo:=0;
nx:=760;
ny:=Image1.Height;
{
if Limpiar then begin
nx:=760;
for i := 0 to cant do begin
Canvas.TextOut(nx,ny,'');
nx:=nx-longX;
end;
Limpiar:=False;
end;
for i := 0 to Length(Letras) do begin
case Letras[i] of
'z': inc(Minusculas[0]);
'y': inc(Minusculas[1]);
'x': inc(Minusculas[2]);
'w': inc(Minusculas[3]);
'v': inc(Minusculas[4]);
'u': inc(Minusculas[5]);
't': inc(Minusculas[6]);
's': inc(Minusculas[7]);
'r': inc(Minusculas[8]);
'q': inc(Minusculas[9]);
'p': inc(Minusculas[10]);
'o': inc(Minusculas[11]);
'ñ': inc(Minusculas[12]);
'n': inc(Minusculas[13]);
'm': inc(Minusculas[14]);
'l': inc(Minusculas[15]);
'k': inc(Minusculas[16]);
'j': inc(Minusculas[17]);
'i': inc(Minusculas[18]);
'h': inc(Minusculas[19]);
'g': inc(Minusculas[20]);
'f': inc(Minusculas[21]);
'e': inc(Minusculas[22]);
'd': inc(Minusculas[23]);
'c': inc(Minusculas[24]);
'b': inc(Minusculas[25]);
'a': inc(Minusculas[26]);
'Z': inc(Mayusculas[0]);
'Y': inc(Mayusculas[1]);
'X': inc(Mayusculas[2]);
'W': inc(Mayusculas[3]);
'V': inc(Mayusculas[4]);
'U': inc(Mayusculas[5]);
'T': inc(Mayusculas[6]);
'S': inc(Mayusculas[7]);
'R': inc(Mayusculas[8]);
'Q': inc(Mayusculas[9]);
'P': inc(Mayusculas[10]);
'O': inc(Mayusculas[11]);
'Ñ': inc(Mayusculas[12]);
'N': inc(Mayusculas[13]);
'M': inc(Mayusculas[14]);
'L': inc(Mayusculas[15]);
'K': inc(Mayusculas[16]);
'J': inc(Mayusculas[17]);
'I': inc(Mayusculas[18]);
'H': inc(Mayusculas[19]);
'G': inc(Mayusculas[20]);
'F': inc(Mayusculas[21]);
'E': inc(Mayusculas[22]);
'D': inc(Mayusculas[23]);
'C': inc(Mayusculas[24]);
'B': inc(Mayusculas[25]);
'A': inc(Mayusculas[26]);
end; //end case
end; //end for
for i := 0 to 26 do begin
Total[i]:=Mayusculas[i]+Minusculas[i];
if Total[i]<>0 then
inc(divs);
end;
longX:=round(Image1.Width/divs);
for i := 0 to 26 do begin
if Total[i]<>0 then begin
nextX:=longX+largo;
nextY:=Total[i]*5;
Color:=RGB(Random(255),Random(255),Random(255));
Image1.Canvas.Brush.Color:=Color;
Image1.Canvas.Rectangle(largo,Image1.Height,nextX,nextY);
Font.Color:=clBlack;
Brush.Style:=bsClear;
Font.Size:=8;
Canvas.TextOut(nx,ny,Let[i]);
nx:=nx-longX;
largo:=nextX;
alto:=nextY;
inc(cant);
end;
end;
Limpiar:=True;
end; //end evento
procedure TForm2.FormCreate(Sender: TObject);
begin
Memo1.Text:='';
Image1.Canvas.Pen.Color:=Clblack;
Image1.Canvas.Brush.Color:=ClWhite;
Image1.Canvas.Rectangle(0,0,Image1.Width,Image1.Height);
end;
end.