for num := start to 500000 do
     begin
        enda:=((num+1977)*304) mod 9977;
        endb:=((num+2002)*107) mod 1108;
        endc:=(enda*enda*enda+endb*endb*endb) mod 100;        QRLabel1.Caption := inttostr(num)+' '+inttostr (endc)
     end;
[Error] Unit1.pas(113): For loop control variable must have ordinal type
不明?

解决方案 »

  1.   

    var
       enda:int64;
       endb:int64;
       endc:int64;
       start:int64;
       num:int64;
       f:TextFile;
       s:string;begin
        start:=0;
         AssignFile(f,'test.txt');
         reset(f);
         readln(f,s);
         closefile(f);
         start:=strtoint(s);     for num := start to 500000 do
         begin
            enda:=((num+1977)*304) mod 9977;
            endb:=((num+2002)*107) mod 1108;
            endc:=(enda*enda*enda+endb*endb*endb) mod 100;        QRLabel1.Caption := inttostr(num)+' '+inttostr (endc)
         end;
    end;
      

  2.   

    具体不清楚,应该是num := start 的问题
      

  3.   

    错误的意思是,循环变量必须是一个有序的类型。在这里,你的循环变量Start应当定义成整数。
      

  4.   

    呵,写回复的时候你的代码还没贴出来Int64是比较特殊的变量,我印象中有资料上提到过它的存储方式类似于浮点数——而不是有序类型。所以不能用来作循环变量。你把Start改成Integer肯定就可以了。
      

  5.   

    NUM 变量类型不对,它必须是一个有序数,如INTEGER,你可能是用实型数如DOUBLE
      

  6.   

    同意 PoolD(池龙) ,将 Start 改为有序类型