分享一個 MC 讀取外部資料的外掛 DLL
本帖最後由 swwang1999 於 14-10-28 15:40 編輯最近因為有些原因 , 需要讀取外部的資料檔 ,但又不想動用到 dataN , 所以本來是想用MC_IO.dll
拿來用, 但是好像遇到一些問題 , 所以索性乾脆自己發展一組 , 只能適用於 MC 專業版 , 不適用於
MC 券商版 , x64 的部分個人有在用 , x86 的部分因為自己沒灌 , 所以就只提供不測試了 , 附上原始碼 .
是用免費的 Dev C++ 5.8.0 版編譯的 , 有做一些防護 , 以免像 MC_IO.dll 檔案不存在 MC 會有 crash
的風險
附上 Dev C++ 5.8.0 版的鏈結 , 這是一個免費的 C++ IDE 編譯器 , http://orwelldevcpp.blogspot.tw/
提供一個使用範例 :
vars: value2(0); // file position pointer
vars: idx (0);
vars: DigitStr("");
if LastBarOnChart and BarStatus(1)=2 then
begin
FileDelete( "e:\hello.txt" );
value2 = 0;
for idx=0 to 2000
begin
value2 = _FIO_ReadDigit( "filename.txt" , value2 , DigitStr );
_FIO_Write( "e:\hello.txt", text(doublequote,DigitStr,doublequote,Spaces(30-Strlen(DigitStr)),value2:8:0 ) , 1 );
end;
end;
感謝您分享!下來看看。 本帖最後由 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;
感謝您分享!非常有用! 感謝您分享, 努力研究中 感謝您無私的分享, 好好研究看看.... 感謝您分享!下來看看。 神人, 感謝分享! 等有coco之後下來看看 先謝謝樓主,問一下 fio dll 檔 該放在那裡? alex198881 發表於 17-3-28 15:47
先謝謝樓主,問一下 fio dll 檔 該放在那裡?
通常是
C:\Program Files\TS Support\MultiCharts64
太棒了
可以好好來研究看看
謝謝大大 謝謝{:4_209:}{:4_209:}{:4_209:} 很強大
來研究看看
謝謝大大 感謝大大無私的分享
買來好好研究看看
頁:
[1]
2