|
因為最近在弄 MC 的讀檔 , 所以搜尋到之前有人分享 MC_IO.zip , 其中有 x86 & x64
兩個版本的外掛 (個人是用x64 的外掛 DLL ) ,但是個人要讀取的檔案是有多行的資料
, 其資料就類似 :
1140102 900 -1 0 8472 1401750 1403150
1140102 915 -1 0 8472 1401750 1403150
1140102 930 -1 0 8472 1401750 1403150
1140102 945 -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
1401750 40.00
1403150 51.00
-1.00
1140102 8.00
900 13.00
-1 18.00
0 20.00
8472 29.00
1401750 40.00
1403150 51.00
-1.00
1140102 8.00
900 13.00
-1 18.00
0 20.00
8472 29.00
|
|