1.怎么控制tchart控件的右键拖动?其实是禁止右键拖动。
2.怎么能使tchart打印的过程中加入别的tlable控件的打印,即tchart和tlable在同一张纸上打印出来?
3.为什么全局变量改为局部变量是,语句不执行?例:timer控件设置时间time为整型变量,每执行一次让time加1,但是把time从全局变量设置成局部变量后,time := time + 1;这条语句执行不了。
4.最重要的一个问题:我编写的程序中的全局、整型变量会被编写的函数影响,而这个函数里根本和这全局、整型变量没有任何关系,为什么会出现这种状况?应该怎么处理才能避免这种情况的发生?这些全局变量我都有用处,这个函数也是必须使用的。非常感谢大家提供宝贵的意见和帮助。最好能说详细些,分数不够,可以再加!

解决方案 »

  1.   

    函数是:
    function ff(int_m: integer;data_sign: integer): string;
    var
      e,tr,ti,n2,j0,k0,c0,c1,s0,s1: single;
      n1,i0,L0,j1,k1: integer;
    begin
      n1 := data_n - 2;
      j0 := data_n / 2;
      for i0 := 1 to n1 do
      begin
        if i0 < j0 then
        begin
          tr := data_r[strtoint(floattostr(j0))];
          ti := data_i[strtoint(floattostr(j0))];
          data_r[strtoint(floattostr(j0))] := data_r[i0];
          data_i[strtoint(floattostr(j0))] := data_i[i0];
          data_r[i0] := tr;
          data_i[i0] := ti;
        end;
        k0 := data_n / 2;
        While k0 <= j0 do
        begin
          j0 := j0 - k0;
          k0 := k0 / 2;
        end;
        j0 := j0 + k0;
      end;
      for L0 := 1 to int_m do
      begin
        n1 := 2 shl (L0-1);
        n2 := n1 / 2;
        e := pi / n2;
        c0 := 1;
        s0 := 0;
        c1 := cos(e);
        s1 := -data_sign * Sin(e);
        for j1 := 1 to strtoint(floattostr(n2)) do
        begin
          i0 := j1 - 1;
          while i0 <= data_n do
          begin
            k0 := i0 + n2;
            k1 := strtoint(floattostr(k0));
            tr := c0 * data_r[k1] - s0 * data_i[k1];
            ti := c0 * data_i[k1] + s0 * data_r[k1];
            data_r[k1] := data_r[i0] - tr;
            data_i[k1] := data_i[i0] - ti;
            data_r[i0] := data_r[i0] + tr;
            data_i[i0] := data_i[i0] + ti;
            i0 := i0 + n1;
          end;
          tr := c0;
          c0 := tr * c1 - s0 * s1;
          s0 := tr * s1 + s0 * c1;
        end;
      end;
      if data_sign = -1 then
      begin
        for i0 := 1 to data_n do
        begin
          data_r[i0] := data_r[i0] / data_n;
          data_i[i0] := data_i[i0] / data_n;
        end;
      end;
    end;data_n是常量,等于512。我定义的全局变量和函数中的变量名根本没有相同的。全局变量是time。在执行函数前是0,执行之后应该赋值为1,可是函数执行完,这个time就变成-483922之类的数了,越界。不知道是什么原因。还有前两题,有人会吗?
      

  2.   

    错误应该总是在
    for j1 := 1 to strtoint(floattostr(n2)) do
        begin
          i0 := j1 - 1;
          while i0 <= data_n do
          begin
            k0 := i0 + n2;
            k1 := strtoint(floattostr(k0));
            tr := c0 * data_r[k1] - s0 * data_i[k1];
            ti := c0 * data_i[k1] + s0 * data_r[k1];
            data_r[k1] := data_r[i0] - tr;
            data_i[k1] := data_i[i0] - ti;
            data_r[i0] := data_r[i0] + tr;
            data_i[i0] := data_i[i0] + ti;
            i0 := i0 + n1;
          end;
          tr := c0;
          c0 := tr * c1 - s0 * s1;
          s0 := tr * s1 + s0 * c1;
        end;
    中产生影响全局变量的值的。
    这个问题很重要,希望能有更多的人关注和帮忙。