如何读出股票的数据文件?我的代码哪里可以改进?(100分)

  • 主题发起人 主题发起人 glink
  • 开始时间 开始时间
G

glink

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var
; f: file of Byte;
; size : Longint;
; i: integer;
; s: byte;
; t: string;
begin
; AssignFile(f, '600161.day');
; Reset(f);
; size := FileSize(f);
; edit1.Text := 'File size in bytes: ' + IntToStr(size);
; t:='';
; for i:=0 to 3 do// ;3:仅仅为了测试
; ; begin
; ; read(f,s);
; ; t :=t+intToHex(s,2);
; ; memo1.Lines.Add(intToStr(s));
; ; end;
; CloseFile(f);
end;

用ultraEdit打开600161.day最前面的几个数据为:48 E1 30 01表示为时间,
代表19980616,但我上面的代码如果不用 t :=t+intToHex(s,2);则读出结果
为 72 255 48 1,把16进制的数据直接读成了10进制。
; 另外19980616 = 十六进制的0130E148,而在600161.day中则保存为
48E13001,即高低位对调。
; 问:有没有直接读二进制文件的方法,不象我的代码那么麻烦?
谢谢!!!
 
LongInt 的 类型存放长度就是8byte,可以直接读入
 
我刚写了个读*.stk格式文件的程序。
你不要用file of byte这样读写,直接用fileread去读写,遇到整型integer就
fileread(filehandle,n,size(n)),如此类推。
这样去读,这种方式很适合对格式不完全了解和不规范
文件操作。
 
sherman:能否详细一点?
snake:帮我看看以下代码什么问题?谢谢!!!
procedure TForm1.Button3Click(Sender: TObject);
var
; iFileHandle: Integer;
; iFileLength: Integer;
; iBytesRead: Integer;
; Buffer: PChar;
; i: Integer;
begin
; iFileHandle := FileOpen('600161.day', fmOpenRead);
; iFileLength := FileSeek(iFileHandle,0,2);
; FileSeek(iFileHandle,0,0);
; Buffer := PChar(AllocMem(iFileLength + 1));
; iBytesRead := FileRead(iFileHandle, Buffer, iFileLength);
; FileClose(iFileHandle);
; button3.Caption :=inttostr(iFileLength);

; for i := 0 to iBytesRead-1 do
; ; begin
; ; StringGrid1.RowCount := StringGrid1.RowCount + 1;
; ; StringGrid1.Cells[1,i+1] := Buffer;
; ; StringGrid1.Cells[2,i+1] := IntToStr(Integer(Buffer));
; ; end;
; FreeMem(Buffer); ;
end;
但是读出的iBytesRead=-1,造成for循环无法进行,请问为什么ibytesRead=-1?
实际上600161.day文件大小为24760字节。
 
例子已发出,自己看吧
数据可以在这里下载
http://stock.21cn.com/sjxz.html
 
非常感谢snake!!!!!
我已解决了问题,非常感谢你的代码!正是它帮了我大忙!
在得到你的授权之前,我不会向第二人泄露你的代码。
 
to snake,glink:
; ;小弟最近急需要STK的文件格式,最好有源程序,能否帮我一把?
非常感谢!!
 
唉,你找glink吧,我的notebook被盗
 
例子能发给我一份吗,谢谢!在下急需,分好商量
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部