var
  n: Integer;
  S: TStrings;
begin
  S := TStringList.Create;
  try
    S.LoadFromFile('my.txt');
    n := Length(S.Text);
    ShowMessage('文件共有字符数:' + IntToStr(n));
  finally
    S.Free;
  end;
end;

解决方案 »

  1.   

    因为txt文件里有换行,因此统计出来的数比实际的字符要多,我希望的是不计算换行符的
      

  2.   

    先照抄上面的。
    var
      n,i: Integer;
      S: TStrings;
    begin
      S := TStringList.Create;
      try
        S.LoadFromFile('my.txt');
        n:=0;
        for i:=0 to s.count-1 do
        begin
         n:=n+Length(S[i]);
        end; 
    //    n := Length(S.Text);
        ShowMessage('文件共有字符数:' + IntToStr(n));
      finally
        S.Free;
      end;
    end;
      

  3.   

    改成这样——
    n := Length(Trim(S.Text)) - (S.Count - 1) * 2;
    ——把两头的空格去掉,然后减去每行后面换行用的两个字符(#13和#10)。
    再试试!
      

  4.   

    你可以用Read(),用底层的文件操作来进行判断啊。
    要不你也可以用TStrings,Length(TString.Text)-2*TString.Count就可以了。