Documento: OCX para acesso a arquivos intraday .SID
Disponibilidade: programa Gol 5.0
publicado em 03/03/03 por omar reis <omar@enfoque.com.br>

 

Introdução

Para permitir o acesso a arquivos de séries intraday de preços (séries .SID), a Enfoque disponibiliza um controle do tipo OCX. Este controle pode ser usado em qualquer ambiente de desenvolvimento que aceite OCX, como Visual Basic, Delphi, C++, scripts em VBA, VBScript ou JavaScript, disponíveis nos programas Excel, Word e Internet Explorer.

Controle SIDReaderOCX.ocx

Os exemplos abaixo ilustram o uso do controle. O objeto SIDReader é do tipo TSIDReaderX. Os exemplos mostram as cotações em um grid.

em Visual basic 5.0:
Sub BCarrega_Click()
    SidReader.Diretorio = "c:\gol\SIDs\"  'diretório que contem as séries
    SidReader.Ativo = "ibov"              'Nome da serie (sem extensão)
    SidReader.CarregaSID                  'Este comando carrega a serie
    LNumRecs.Caption = Str(SidReader.NumRecs) + "  registros"
    Grid.Clear                    'Este mostra as cotações num Grid
    Grid.Rows = SidReader.NumRecs + 1
    For i = 1 To SidReader.NumRecs
        SidReader.Posicao = i           'Posiciona no registro i da série
        Grid.Row = i
        Grid.Col = 0
        Grid.Text = Str(i)
        If SidReader.Data <> 0 Then     'Data <> 0 --> registro inicializado
          Grid.Col = 1
          Grid.Text = Str(SidReader.Data)
          Grid.Col = 2
          Grid.Text = Str(SidReader.Fechamento) 'pega os valores
          Grid.Col = 3
          Grid.Text = Str(SidReader.Maximo)
          Grid.Col = 4
          Grid.Text = Str(SidReader.Minimo)
          Grid.Col = 5
          Grid.Text = Str(SidReader.Abertura)
          Grid.Col = 6
          Grid.Text = Str(SidReader.Volume)
          Grid.Col = 7
          Grid.Text = Str(SidReader.NumNeg)
        End If
    Next
End Sub

em Delphi:

procedure TFormTestSIDReaderOCX.BAtualizaClick(Sender: TObject);
var i:integer;
begin
  try
    Screen.Cursor := crHourglass;
    SIDReaderX1.Diretorio:=EdDirLPs.Text;
    SIDReaderX1.Ativo:=EdAtivo.Text;
    SIDReaderX1.CarregaSID;    {Este comando carrega a serie}

    LNumRecs.Caption:=IntToStr(SIDReaderX1.NumRecs)+ ' registros';

    GridSerie.RowCount:=SIDReaderX1.NumRecs+1;
    for i:=1 to SIDReaderX1.NumRecs do
      begin
        SIDReaderX1.Posicao:=i; {Posiciona registro}
        GridSerie.Cells[0,i]:=IntToStr(i);
        GridSerie.Cells[1,i]:=FormatDateTime('dd/mm/yy',SIDReaderX1.Data);
        GridSerie.Cells[2,i]:=Format('%6.2f',[SIDReaderX1.Fechamento]);
        GridSerie.Cells[3,i]:=Format('%6.2f',[SIDReaderX1.Maximo]);
        GridSerie.Cells[4,i]:=Format('%6.2f',[SIDReaderX1.Minimo]);
        GridSerie.Cells[5,i]:=Format('%6.2f',[SIDReaderX1.Abertura]);
        GridSerie.Cells[6,i]:=Format('%7.0f',[SIDReaderX1.Volume]);
        GridSerie.Cells[7,i]:=Format('%7.0f',[SIDReaderX1.NumNeg]);
      end;
  finally
    Screen.Cursor:=crDefault;
  end;
end;

Para usar o controle no VB, inclua o arquivo SIDReaderOCX.OCX no seu projeto. O componente SIDReaderX vai aparecer na palette de componentes do Visual Basic. É um componente não visual (de fato na versão atual não aparece nem no ambiente de desenvolvimento). Coloque o controle no Form.

No Delphi, instale o controle no windows e depois importe o ActiveX no ambiente de desenvolvimento.

Para carregar uma série, setar as propriedades como no exemplo e chamar o método CarregaSid. Depois basta ajustar a Posicao para o numero do registro desejado e ler os valores. O número real de registros carregados é dado pela propriedade NumRecs.

Instalação e registro do componente

Para instalar o componente de acesso a SIDs:

1) Faça o download pelo link abaixo, e salve no diretorio enfoque (p.e. c:\enfoque\ )

2) Unzipe os arquivos dentro do diretório

3) É necessário registrar o componente no Windows ao instalá-lo. Para isso, no prompt do DOS dentro do mesmo diretorio, digitar:

regsvr32 SIDReaderOCX.ocx

Isso instalará o componente no Windows.

 

 

 

(c)copr 1988-2005 Enfoque Gráfico Sistemas Ltda - todos os direitos reservados