|
樓主 |
發表於 14-11-9 18:30
|
顯示全部樓層
本帖最後由 swwang1999 於 14-11-9 18:31 編輯
更新一版 _FIO_ReadDigit 函數 , 加快讀取的速度 , 之前的版本速度比較慢
//
// _FIO_ReadDigit : Read Digit from file
//
//
//
Inputs:FileName ( String ),
FilePos ( Numeric ),
DigitValue ( NumericRef );
vars : idx (0);
vars : result (0);
vars : NextFilePos (0);
vars : ReadCnt (0);
vars : DigitStr ("");
vars : CurChar ("");
vars : CurString ("");
if FilePos>=0 then
begin
DigitStr = "";
ReadCnt = _FIO_Read( FileName, (FilePos+1) , 30 , CurString );
for idx=1 to ReadCnt
begin
CurChar = MidStr( CurString , idx , 1 );
switch(CurChar)
begin
case "-",
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
".": DigitStr= DigitStr+ CurChar;
default : begin
if DigitStr<>"" then
begin
NextFilePos = FilePos + idx;
break;
end;
end;
end;
end;
DigitValue = StrToNum( DigitStr );
if ReadCnt<30 and DigitStr="" then NextFilePos= (-1);
end
else
begin
DigitValue = 0;
NextFilePos = (-1);
end;
_FIO_ReadDigit = NextFilePos;
|
|