Подсчет кол-ва символов каждого типа(помогите найти ошибку)

Gozd
Дата: 16.06.2009 16:20:06
Все работает.Толко Chart Рисует полынй бред а дсиперсия с мат ожиданием поражают вообажение.

//текстовый файл перегоняем в строку
function TTexts.ReadFromFile(FileName: string): TypOfString ;
var S: TypOfString ;
    iFileHandle,iFileLength: Integer;
    Buffer: PChar;
begin
  try
  iFileHandle := FileOpen(FileName, fmOpenRead);
  iFileLength := FileSeek(iFileHandle,0,2);
  FileSeek(iFileHandle,0,0);
  Buffer := PChar(AllocMem(iFileLength + 1));
  FileRead(iFileHandle, Buffer^, iFileLength);
  FileClose(iFileHandle);
  S:=Buffer;
  finally
   FreeMem(Buffer);
  end;
  Result:=S;
end;

//Считаем по сколько каждого символа в тексте

Procedure TTexts.AnsiToarr(S: TypOfString ;var Xaxis:array of integer);
var
  I: Integer;
begin
  for I := 0 to 255 do
  begin
    Xaxis[i]:=0;
  end;
  for I := 1 to Length(S) do
  begin
    Xaxis[Ord(S[I])]:=Xaxis[Ord(S[I])]+1;
  end;
end;

//рисуем график в чарте

Procedure TTexts.Sdat(Fn:string); 
var
    Ftxt: TypOfString ;
    I,sum: Integer;
    p:array[0..255] of real;
Begin
  sum:=0;
  Ftxt:=ReadFromFile(Fn);
  AnsiToarr(Ftxt,Xaxis);
    for i:=0  to 255 do
      Begin
        Sasci.AddXY(i,Xaxis[i],'',clRed);
        sum:=sum+Xaxis[i];
      End;
      if sum <>0 then
      begin
        for i:=0  to 255 do
        Begin
          p[i]:=Xaxis[i]/sum;
        End;
        Form3.Modis(Xaxis,p,0,255,label1,label2);  //Вычисление дисперсий
    end;
End;

Модератор: Пользуйтесь тегом (кнопкой) SRC для оформления кода, пожалуйста.
Gozd
Дата: 16.06.2009 16:21:47
да и
type
TypOfString = AnsiString;