swwang1999 發表於 14-10-28 15:23

分享一個 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/






swwang1999 發表於 14-10-28 15:38

提供一個使用範例 :

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;

jkvegan 發表於 14-11-8 17:53

感謝您分享!下來看看。

swwang1999 發表於 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;

horizon1231 發表於 14-11-24 21:15

感謝您分享!非常有用!

HaoTseng 發表於 15-4-30 18:21

感謝您分享, 努力研究中

dinomc 發表於 15-5-12 10:15

感謝您無私的分享, 好好研究看看....

ma2002 發表於 15-6-3 08:09

感謝您分享!下來看看。

cyanidejj 發表於 15-11-11 15:06

神人, 感謝分享! 等有coco之後下來看看

alex198881 發表於 17-3-28 15:47

先謝謝樓主,問一下 fio dll 檔 該放在那裡?

hipper68 發表於 17-3-28 19:00

alex198881 發表於 17-3-28 15:47
先謝謝樓主,問一下 fio dll 檔 該放在那裡?

通常是
C:\Program Files\TS Support\MultiCharts64

alexguitar 發表於 19-9-1 15:32

太棒了
可以好好來研究看看
謝謝大大

abopt 發表於 19-9-1 17:29

謝謝{:4_209:}{:4_209:}{:4_209:}

cykspot 發表於 19-9-12 09:29

很強大
來研究看看
謝謝大大

csieman 發表於 21-4-11 13:58

感謝大大無私的分享
買來好好研究看看
頁: [1] 2
查看完整版本: 分享一個 MC 讀取外部資料的外掛 DLL