當前位置:編程學習大全網 - 編程語言 - 求大神C#編程:打開並讀取格式為“.day”的文件!!!求助!!!

求大神C#編程:打開並讀取格式為“.day”的文件!!!求助!!!

這是個二進制文件,用低級函數讀寫。

建議先用ultraedit打開,把裏面的結構搞清楚,例如那壹段是股票代號,哪壹段是名稱,哪壹段價格。

第二步:讀寫流。讀寫二進制文件用System.IO.BinaryReader和System.IO.BinaryWriter類;

妳同樣要分析數據格式。特別day文件裏的日期,我是老早搞過,現在都忘了。裏面的日期好像還要換算。day文件裏存儲的是壹段時期的每天價格。這個好像很好分析的。原來用delphi編過,剛才找沒找到,可能被老婆給刪除了。

這個給妳參考:

壹、數據文件和數據結構:

大智慧數據文件和數據結構:(假設大智慧股票行情軟件安裝在D:dzh目錄下)

上海日線存儲路徑為:D:dzhDATASHaseDay,文件擴展名為:.day

上海周線存儲路徑為:D:dzhDATASHaseweek,文件擴展名為: .wek

上海月線存儲路徑為:D:dzhDATASHasemonth,文件擴展名為: .mnt

深圳日線存儲路徑為:D:dzhDATASZnseDay

深圳周線存儲路徑為:D:dzhDATASZnseweek

深圳月線存儲路徑為:D:dzhDATASZnsemonth

周線,月線格式與日線格式壹致.

以深發展日線為例:

1A76:0100 D6 CD 2F 01 52 07 01 00-52 07 01 00 52 07 01 00

1A76:0110 52 07 01 00 86 0F 00 00-4D 02 00 00 00 00 00 00

1A76:0120 00 00 00 00 00 00 00 00-D7 CD 2F 01 60 03 01 00

1A76:0130 60 03 01 00 60 03 01 00-60 03 01 00 82 05 00 00

1A76:0140 D4 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00

每壹條記錄的長度為40字節:

1-4字節為日期,D6 CD 2F 01轉換為十進制是:19910102

5-8字節=開盤價(元)*1000

9-12字節=最高價(元)*1000

13-16字節=最低價(元)*1000

17-20字節=收盤價(元)*1000

21-24字節=成交金額(元)/1000

25-28字節=成交量(手)

其余12字節未使用

實現步驟:

1、先定義日線數據結構數組

2、再以實際記錄數分配動態數組空間

3、然後把數據讀入相應數組中

日線數據放在:%app_dir%\DATA\SHase\Day(上證A股) 以及 %app_dir%\DATA\SZnse\Day(深圳A股)

#pragma once

struct DZH5Day

{

unsigned long date;//date的格式:20070423

unsigned long open;//開盤價

unsigned long high;//最高價

unsigned long low;//最低價

unsigned long close;//收盤價

unsigned long moneysum;//成交金額

unsigned long turnover;//成交數量

char unused[12];//保留

};

整個結構***40個字節,讀者可以查看所有的日線文件,大小肯定是40的倍數

這樣很容易讀出相應的數據:

如:

FILE* pFile = fopen("600001.day", "rb");

if (NULL != pFile)

{

while(!feof(pFile))

{

DZH5Day dayK;

fread(&dayK, sizeof(DZH5Day), 1, pFile);

......

}

}

-------------------------------------------------------------------------------------------------------

  • 上一篇:怎麽解決內存不足?
  • 下一篇:編程和奧數哪個更好
  • copyright 2024編程學習大全網