swwang1999 發表於 14-10-21 21:29

MC_IO dll 只能讀第一行嗎?


因為最近在弄 MC 的讀檔 , 所以搜尋到之前有人分享 MC_IO.zip , 其中有 x86 & x64
兩個版本的外掛 (個人是用x64 的外掛 DLL ) ,但是個人要讀取的檔案是有多行的資料
, 其資料就類似 :

1140102900   -1 0   8472    1401750    1403150
1140102915   -1 0   8472    1401750    1403150
1140102930   -1 0   8472    1401750    1403150
1140102945   -1 0   8472    1401750    1403150
1140102 1000   -1 0   8472    1401750    1403150
1140102 1015   -1 0   8472    1401750    1403150
1140102 1030   -1 0   8472    1401750    1403150
1140102 1045   -1 0   8472    1401750    1403150
1140102 1100   -1 0   8472    1401750    1403150
1140102 1115   -1 0   8472    1401750    1403150

但是個人一直都只能讀第一行 , 之後 MCIO 的讀取就認為到檔尾了,
這是個人不會用 , 還是這是這個 DLL 本身的限制 , 有人可以幫忙看看
這可能是甚麼問題嗎?

附上個人寫的程式 :

//-------------------------------------------------------------
//主程式 (節錄)
//-------------------------------------------------------------

vars: idx            (0);
vars: num_string("");

value2=0;

for idx=0 to 20
         
      begin      
      
      value2= _MCIO_read_number( "e:\$ST040.txt" , value2 , num_string );
      
      print( file( "e:\hello.txt" ) , num_string , value2 );
      
      end;

//--------------------------------------------------------------
//   _MCIO_read_number , 函式
//--------------------------------------------------------------

inputs : FileName (string   );
inputs : FilePos(Numeric    );
//inputs : NumValue (NumericRef );
inputs : NumValue (StringRef );
vars   : intrabarpersist ExitFlag(false);
vars   : intrabarpersist CurFilePos(0);
vars   : intrabarpersist Length    (0);
vars   : intrabarpersist CurChar   ("");
vars   : intrabarpersist NumString ("");

DEFINEDLLFUNC:"D:\MC_IO\MCIOx64.dll",lpstr,"ANREAD",lpstr,int;

NumString= "";
Length   = 0;
CurFilePos = IFF( FilePos<0 , 0 , FilePos);

ExitFlag   = false;

while (not ExitFlag)
    begin
   
      CurFilePos = CurFilePos+1;
      Length   = Length+1;      
      CurChar    = ANREAD( FileName, CurFilePos);      
                              
      switch(CurChar)
          begin
               
            case "-",
               "0",
               "1",
               "2",
               "3",
               "4",
               "5",
               "6",
               "7",
               "8",
               "9",
               ".":NumString=NumString+ CurChar;
                                 
            case NewLine:
                     begin
                         ExitFlag=true;
                     end;
            
            default : begin
                         if NumString<>"" then ExitFlag=true;
                         if CurChar= "" then ExitFlag=true;
                      end;      
         
          end;      
         
         if Length>=30 then ExitFlag=true;                     
                              
    end;
   
if CurChar="" then CurFilePos= (-1);

//print( file( "e:\hello1.txt" ) , NumString + NewLine );
      
//NumValue = StrToNum( NumString );
NumValue = NumString;
   
_MCIO_read_number = CurFilePos;   

//----------------------------------------------------------------
//輸出結果 (Hello.txt)
//----------------------------------------------------------------

1140102   8.00
900         13.00
-1         18.00
0            20.00
8472       29.00
140175040.00
140315051.00
            -1.00
1140102   8.00
900         13.00
-1         18.00
0            20.00
8472       29.00
140175040.00
140315051.00
            -1.00
1140102   8.00
900         13.00
-1         18.00
0            20.00
8472      29.00




頁: [1]
查看完整版本: MC_IO dll 只能讀第一行嗎?