if v_kd1=5 then
        begin
          with TC_MMSMB3 do    
          begin
            close;
            parameters[0].value:=v_range;  
            open;
            if not eof then
            begin
              v_mold1:=FieldByName('TC_PPLTA05').AsString; 
              v_mold:=FieldByName('TC_APSMB002').AsString; 
            end;
          end;
        end;
以前学的是JAVA,现在公司要求把Delphi翻为JAVA程序,
上面一段代码中的 if not eof 是什么意思?是TC_MMSMB3 不为空的意思吗?
在if not eof中 给两个变量赋值,这时候的赋值是 TC_MMSMB3 的值吗?如果是,是第几行的值呢?

解决方案 »

  1.   

    > 上面一段代码中的 if not eof 是什么意思?是TC_MMSMB3 不为空的意思吗?是
    他省略了调用first,open后隐性地调用了first。
    是first导致了eof的结果,
    其结果正好跟你所谓的空是同一个意思。(eof = End of File)> 在if not eof中 给两个变量赋值,这时候的赋值是 TC_MMSMB3 的值吗?如果是,是第几行的值呢?第1行
      

  2.   

    那我是不是可以翻譯成这样
    Datatable dt=TC_MMSMB3 ;
    if (dt !=null) {
      v_mold1:=dt.rows[0]['TC_PPLTA05']; 
       v_mold:=dt.rows[0]['TC_APSMB002']; 
    }
      

  3.   

    不是
    应翻成这样吧:
    Datatable dt=TC_MMSMB3 ;
    if (dt.rows.count>0) {
      v_mold1:=dt.rows[0]['TC_PPLTA05']; 
       v_mold:=dt.rows[0]['TC_APSMB002']; 
    }
      

  4.   

    还有一个问题
    with tc_mpstx2 do      
                  begin
                    close;             
                    parameters[0].value:=TC_PLCMAAD1.FieldByName('TC_PLCMAAD01').AsString;
                    open;
                    v_mold:=FieldByName('TC_APSMB002').AsString;
                  end;这一段中的v_mold:=FieldByName('TC_APSMB002').AsString; 也是取得第一行数据吗?为什么呢?
      

  5.   

    还有一个问题
    with tc_mpstx2 do      
                  begin
                    close;             
                    parameters[0].value:=TC_PLCMAAD1.FieldByName('TC_PLCMAAD01').AsString;
                    open;
                    v_mold:=FieldByName('TC_APSMB002').AsString;
                  end;这一段中的v_mold:=FieldByName('TC_APSMB002').AsString; 也是取得第一行数据吗?为什么呢?