Download stock quote file from yahoo

Download stock quote file from yahoo

Postby thuc18 » Mon Jun 02, 2008 12:56 am

:( Pls help, want to download quotes.csv file from

:"//finance.yahoo.com/d/quotes.csv?s=BBDB.TO+NT.TO+GE+MSFT&f=snl1d1t1ohgdr"

with thanks
(xharbour/FWH)
thuc18
 
Posts: 4
Joined: Sat May 31, 2008 11:32 pm

Postby Rochinha » Mon Jun 02, 2008 2:39 am

Try this,

Code: Select all  Expand view
#include "fivewin.ch"

Function Main()

local ws:=TdWebService():new()
? ws:OpenWS("http://finance.yahoo.com/d/quotes.csv?s=BBDB.TO+NT.TO+GE+MSFT&f=snl1d1t1ohgdr")
ws:end()

return nil


TWebsrc.prg
Code: Select all  Expand view
#include "dll.ch"

static xdll
*****************************
CLASS TdWebService
     DATA hOpen
     DATA sbuffer HIDDEN
     DATA xDLL HIDDEN

     METHOD New(buffersize) CONSTRUCTOR

     METHOD OpenWS(url)

     METHOD End()
ENDCLASS
*****************************
METHOD New(conexion,buffersize) CLASS TdWebService
DEFAULT buffersize:=64000
   ::sbuffer:=buffersize
   xDll:=LoadLib32("wininet.dll")
   ::hOpen = InternetOpen("TdWebService", 1,,, 0)
RETURN Self
*****************************
METHOD OpenWS(url) CLASS TdWebService
local hFile,ret,xml
   hFile = InternetOpenUrl(::hOpen, url,"",0,,0)
   xml:=space(::sbuffer)
   InternetReadFile(hFile, @xml, ::sbuffer, @Ret)
return subst(alltrim(xml),1,len(alltrim(xml))-5)
*****************************
METHOD End() CLASS TdWebService
   FreeLib32(xDll)
return nil
*****************************

DLL32 FUNCTION InternetOpen( cApp as LPSTR, n1 AS DWORD, n2 AS LPSTR, n3 AS LPSTR,;
                             n4 AS DWORD ) AS LONG PASCAL ;
                             FROM "InternetOpenA" LIB xdll
Dll32 Function InternetReadFile(hFile As 7, @sBuffer As 8, lNumBytesToRead As 7, @lNumberOfBytesRead As 7) As 7 PASCAL Lib xdll
Dll32 Function InternetOpenUrl(hInternetSession As 7, lpszUrl As 8, lpszHeaders As 8, dwHeadersLength As 7, dwFlags As 7, dwContext As 7) As 7 FROM "InternetOpenUrlA" PASCAL Lib xdll
DLL32 FUNCTION InternetCloseHandle( hSession AS LONG ) AS BOOL PASCAL LIB xdll
Rochinha
 
Posts: 309
Joined: Sun Jan 08, 2006 10:09 pm
Location: Brasil - Sao Paulo

Postby thuc18 » Mon Jun 02, 2008 1:15 pm

Thanks Rochinha,
When I complied it produced a lot of error (FWH 7.12/xharbour 1.1.0) such as "parse error at 'hOpen' " , 'sBuffer' etc...
thuc18
 
Posts: 4
Joined: Sat May 31, 2008 11:32 pm

Postby Rochinha » Tue Jun 03, 2008 6:59 pm

Friend,

Try now:
Code: Select all  Expand view
#include "fivewin.ch"
#include "dll.ch"

static xDLL // Need to TdWebService
static oGet,oSay

Function Main()
   local ws:=TdWebService():new()
   ? ws:OpenWS("http://finance.yahoo.com/d/quotes.csv?s=BBDB.TO+NT.TO+GE+MSFT&f=snl1d1t1ohgdr")
   ws:end()
return nil

CLASS TdWebService
     DATA hOpen
     DATA sbuffer HIDDEN
     DATA xDLL HIDDEN

     METHOD New(buffersize) CONSTRUCTOR

     METHOD OpenWS(url)

     METHOD End()
ENDCLASS

METHOD New(conexion,buffersize) CLASS TdWebService
   DEFAULT buffersize:=64000
   ::sbuffer:=buffersize
   xDll:=LoadLib32("wininet.dll")
   ::hOpen = InternetOpen("TdWebService", 1,,, 0)
   RETURN Self

METHOD OpenWS(url) CLASS TdWebService
   local hFile,ret,xml
   hFile = InternetOpenUrl(::hOpen, url,"",0,,0)
   xml:=space(::sbuffer)
   InternetReadFile(hFile, @xml, ::sbuffer, @Ret)
   return subst(alltrim(xml),1,len(alltrim(xml))-5)

METHOD End() CLASS TdWebService
   FreeLib32(xDll)
   return nil


DLL32 FUNCTION InternetOpen( cApp as LPSTR, n1 AS DWORD, n2 AS LPSTR, n3 AS LPSTR,;
                             n4 AS DWORD ) AS LONG PASCAL ;
                             FROM "InternetOpenA" LIB xdll
Dll32 Function InternetReadFile(hFile As 7, @sBuffer As 8, lNumBytesToRead As 7, @lNumberOfBytesRead As 7) As 7 PASCAL Lib xdll
Dll32 Function InternetOpenUrl(hInternetSession As 7, lpszUrl As 8, lpszHeaders As 8, dwHeadersLength As 7, dwFlags As 7, dwContext As 7) As 7 FROM "InternetOpenUrlA" PASCAL Lib xdll
DLL32 FUNCTION InternetCloseHandle( hSession AS LONG ) AS BOOL PASCAL LIB xdll
Rochinha
 
Posts: 309
Joined: Sun Jan 08, 2006 10:09 pm
Location: Brasil - Sao Paulo

Postby thuc18 » Wed Jun 04, 2008 1:34 am

Still get the same error messages. Are we use the same version . I also use FWH 7.12. Thanks again.
xHarbour Compiler build 1.1.0 (SimpLex)
Copyright 1999-2007, http://www.xharbour.org http://www.harbour-project.org/
Compiling 'quote.prg'...
quote.prg(9) Error E0016 Syntax error: '?'
quote.prg(14) Error E0030 Syntax error: "parse error at 'HOPEN'"
quote.prg(15) Error E0030 Syntax error: "parse error at 'SBUFFER'"
quote.p?rg(16) Error E0030 Syntax error: "parse error at 'XDLL'"
quote.prg(18) Error E0030 Syntax error: "parse error at 'NEW'"
quote.prg(20) Error E0030 Syntax error: "parse error at 'OPENWS'"
quote.prg(22) Error E0030 Syntax error: "parse error at 'END'"
quote.prg(23) Error E0030 Syntax error: "parse error at 'TO'"
quote.prg(26) Error E0030 Syntax error: "parse error at 'BUFFERSIZE'"
quote.prg(32) Error E0019 #error: 'Method "OpenWS(url)" not declared in class: TdWebService'
quote.prg(39) Error E0019 #error: 'Method "End()" not declared in class: TdWebService'
quote.prg(46) Error E0030 Syntax error: "parse error at 'FUNCTION'"
12 errors

No code generated
thuc18
 
Posts: 4
Joined: Sat May 31, 2008 11:32 pm

Postby James Bott » Wed Jun 04, 2008 4:24 am

thuc18,

You should not be getting these errors--they are standard FW commands.

Perhaps your program is not finding the fivewin.ch file? Are you using buildx.bat to compile? Maybe you have an extra line feed somewhere in your code?

James
User avatar
James Bott
 
Posts: 4840
Joined: Fri Nov 18, 2005 4:52 pm
Location: San Diego, California, USA

Postby Otto » Wed Jun 04, 2008 5:17 am

Rochinha, thank you for the code.
May I put the sample on
http://fwcodesnips.com

Regards,
Otto
User avatar
Otto
 
Posts: 6091
Joined: Fri Oct 07, 2005 7:07 pm

Postby thuc18 » Wed Jun 04, 2008 6:25 am

It works now. when I pasted source code from here to Word then convert to text file somehow it had some invisible chr which compiler not like it.
Thank Rochinha for the code and James for hints :D
thuc18
 
Posts: 4
Joined: Sat May 31, 2008 11:32 pm

Postby Rochinha » Wed Jun 04, 2008 8:57 am

Otto,

Put this code:
Code: Select all  Expand view
#include "fivewin.ch"
#include "dll.ch"

static xDLL // Need to TdWebService
static oGet,oSay

Function Main()
   local oDlg,oFont,WhatQuote:=space(50)
   local cResult := "Samples:" + CRLF + CRLF + "IBM" + CRLF + "MSFT+NO.TO" + CRLF + "DOW+MSFT+IBM"
   DEFINE FONT oFont NAME "ARIAL" SIZE 00,-12 BOLD
   DEFINE DIALOG oDlg TITLE "Push Quotes from Yahoo Finance" FROM 00,00 to 23,80 FONT oFont
          @ 0.6,01 say "Get Quotes: " of oDlg
          @ 0.5,5.5 get oGet var WhatQuote pict "@!" of oDlg
          @ 0.3,43 button "Push" size 44,12 of oDlg ACTION Consulta(WhatQuote)
          @ 02,01 to 12,44 LABEL "Resultado da pesquisa" of oDlg
          @ 2.5,2.2 say oSay var cResult size 290,125 of oDlg color nRGB(255,0,0),getsyscolor(15)
   ACTIVATE DIALOG oDlg CENTERED
   return nil

Function Consulta(WhatQuote)
   local ws:=TdWebService():new()
   cQuotes := ws:OpenWS("http://finance.yahoo.com/d/quotes.csv?s="+WhatQuote+"&f=snl1d1t1ohgdr")
   oSay:settext( cQuotes )
   ws:end()
   return nil

//static xdll
CLASS TdWebService
     DATA hOpen
     DATA sbuffer HIDDEN
     DATA xDLL HIDDEN

     METHOD New(buffersize) CONSTRUCTOR

     METHOD OpenWS(url)

     METHOD End()
ENDCLASS

METHOD New(conexion,buffersize) CLASS TdWebService
   DEFAULT buffersize:=64000
   ::sbuffer:=buffersize
   xDll:=LoadLib32("wininet.dll")
   ::hOpen = InternetOpen("TdWebService", 1,,, 0)
   RETURN Self

METHOD OpenWS(url) CLASS TdWebService
   local hFile,ret,xml
   hFile = InternetOpenUrl(::hOpen, url,"",0,,0)
   xml:=space(::sbuffer)
   InternetReadFile(hFile, @xml, ::sbuffer, @Ret)
   return subst(alltrim(xml),1,len(alltrim(xml))-5)

METHOD End() CLASS TdWebService
   FreeLib32(xDll)
   return nil

DLL32 FUNCTION InternetOpen( cApp as LPSTR, n1 AS DWORD, n2 AS LPSTR, n3 AS LPSTR,;
                             n4 AS DWORD ) AS LONG PASCAL ;
                             FROM "InternetOpenA" LIB xdll
Dll32 Function InternetReadFile(hFile As 7, @sBuffer As 8, lNumBytesToRead As 7, @lNumberOfBytesRead As 7) As 7 PASCAL Lib xdll
Dll32 Function InternetOpenUrl(hInternetSession As 7, lpszUrl As 8, lpszHeaders As 8, dwHeadersLength As 7, dwFlags As 7, dwContext As 7) As 7 FROM "InternetOpenUrlA" PASCAL Lib xdll
DLL32 FUNCTION InternetCloseHandle( hSession AS LONG ) AS BOOL PASCAL LIB xdll


Note: The credits for de TWebService Class is not for me.
Rochinha
 
Posts: 309
Joined: Sun Jan 08, 2006 10:09 pm
Location: Brasil - Sao Paulo


Return to FiveWin for Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 37 guests