Como me interesa personalmente el tema de los niveles de polen en el ambiente, por tema de alergias y me cansé un poco de ir a la pagina de la "Sociedad Española de Alergología e Inmunología Clínica" , http://www.seaic.org/(aunque agradezco su labor), y me apetecia investigar un poco el tema de las Expresiones Regulares y la extraccion de datos de paginas WEB me lance a preparar un Script que ha ido creciendo, desde una simple ventanita con los valores numericos, a una ventana grafica.
Creo que puede ser mejorada, y ampliada, asi que aqui adjunto el codigo fuente:
Seguro que tiene varias cosas mejorables, pero os agradeceria si podeis echar un vistazo a la parte de la grafica, ya que a veces no la dibuja, o al minimizar y volver a maximizar, se 'borra' los graficos...
A ver que os parece!


Código: Seleccionar todo
#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=Icono.ico
#AutoIt3Wrapper_outfile=Datos_SEAIC.exe
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.6.1
Author: Juantxo V
Script Function: Lee los datos correspondientes a PAMPLONA de la pagina de la Sociedad Española de Alergología e Inmunología Clínica y crea un grafico...
Para buscar la correspondiente a otra ciudad, Ir a http://www.polenes.com/ y seleccionar los valores (no testado)
Template AutoIt script.
#ce ----------------------------------------------------------------------------
; Script Start - Add your code below here
#include <string.au3>
#include <array.au3>
#include <Date.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <WinAPI.au3>
#region ### Ejecucion en exclusiva
; Poner al inicio del script
Dim $g_szVersion
$g_szVersion = "Alergias"
If WinExists($g_szVersion) Then
MsgBox(16, "En ejecucion", "La aplicacion ya esta en ejecucion", 2)
WinActivate($g_szVersion)
; ** _EscribeLOG("Ya esta en ejecucion") ; Guarda registro en LOGs
Exit ; Ya está en ejecución
EndIf
AutoItWinSetTitle($g_szVersion)
#endregion ### Ejecucion en exclusiva
Global $Debug = 0 ; Variable para depuracion. Poner a 1 para depurar.
Global $SoloGraf = 0 ; Si =1 solo saca el grafico con los valores actuales
If @Compiled Then
$Debug = 0 ; Si esta compilado, no muestra las tablas.
$SoloGraf = 0 ; no muestra SOLO el grafico y sale.
EndIf
Dim $Archivo_INI = @ScriptDir & "\SEAIC.ini"
$URL = "http://www.polenes.com/graficos/jsp/ImgGrafico.jsp?chkPolenes=GRAMI&selEstacion=PAM|2004|2005|2006|2007|2009|2010|2011|2012|&selAnioTrimes=&selPeriodo=USE&txtFDesde=01%2F01%2F2012&txtFHasta=09%2F05%2F2012&prov=PAM&hidPolen=%26polen%3DGRAMI&hidCheckSel=&mostrarGraf=S&hidPolenSolo=N&hidAgradecimientos=Dra+Marta+Orta&hidMailProv=morta%40imqnavarra.com&hidWebProv=&hidCalPolinico=&hidPagHtmlGraf=&idio=ES&numPolenesSeleccionados=1&hidAniosEstacion=&primero=true" ;URL para obtener la informacion
;URL por defecto. La concreta la toma del INI.
$URL_Base = IniRead($Archivo_INI, "URL", "Web", $URL)
$HTML_Error = "<html><head><title>Apache Tomcat/5.5.20 - Error report</title><style>"
$oHTTP = ObjCreate("winhttp.winhttprequest.5.1") ; Creamos una instancia de un objeto que nos permitirá realizar una peticion HTTP
$oHTTP.Open("GET", $URL_Base) ; Peticion tipo GET, tambien podríamos utilizar un POST
$oHTTP.Send() ; Realizamos la peticion
$HTMLSource = $oHTTP.Responsetext ; Obtenemos el HTML
Dim $Cont_Error = 0 ; Controlamos los intentos de acceder a la pagina. Si hay mas de 10, sale con un error.
While (StringLeft($HTMLSource, StringLen($HTML_Error)) = $HTML_Error) And $Cont_Error < 11
Sleep(500)
; ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $HTML_Error = ' & $HTML_Error & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
$oHTTP.Open("GET", $URL_Base) ; Peticion tipo GET, tambien podríamos utilizar un POST
$oHTTP.Send() ; Realizamos la peticion
$HTMLSource = $oHTTP.Responsetext ; Obtenemos el HTML
$Cont_Error += 1
WEnd
If $Cont_Error < 10 Then
#region Boletin De comentarios
;--------------------------------------------------------------------------
; En esta parte sacamos los datos del boletin en texto, para un futuro uso.
;--------------------------------------------------------------------------
$Antes = 'Comentario para: Pamplona</p></td></tr>' ; Cadena inicio para la extraccion de StringRegExp
$Despues = '</p>' ; Cadena fin para la extraccion de StringRegExp
$sBoletin = StringRegExp($HTMLSource, $Antes & "(?s)(.*?)" & $Despues, 3) ; Extrae todo el texto del 'boletin' en el elemento [0] del Array
If Not @error Then ; Si encuentra los datos
$sBoletin = StringRegExp($sBoletin[0], "-(.*)", 3) ;Separamos el texto en un Array para cada dato.
For $x = 0 To UBound($sBoletin) - 1 ;quitamos los espacios en blanco al final de las cadenas.
$sBoletin[$x] = StringStripWS($sBoletin[$x], 3)
If $Debug Then ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sBoletin[$x] = ' & $sBoletin[$x] & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
Next
If $Debug = 1 Then _ArrayDisplay($sBoletin)
#region Fecha
; ----------
; Convertimos la fecha 11-17 DE JUNIO DE 2012 en SEMANA 11-17/06/2012
; ------------------
$sBoletin[0] = StringReplace($sBoletin[0], " DE ", "/")
$sBoletin[0] = StringReplace($sBoletin[0], ":", "")
$sBoletin[0] = StringReplace($sBoletin[0], "ENERO", "01")
$sBoletin[0] = StringReplace($sBoletin[0], "FEBRERO", "02")
$sBoletin[0] = StringReplace($sBoletin[0], "MARZO", "03")
$sBoletin[0] = StringReplace($sBoletin[0], "ABRIL", "04")
$sBoletin[0] = StringReplace($sBoletin[0], "MAYO", "05")
$sBoletin[0] = StringReplace($sBoletin[0], "JUNIO", "06")
$sBoletin[0] = StringReplace($sBoletin[0], "JULIO", "07")
$sBoletin[0] = StringReplace($sBoletin[0], "AGOSTO", "08")
$sBoletin[0] = StringReplace($sBoletin[0], "SEPTIEMBRE", "09")
$sBoletin[0] = StringReplace($sBoletin[0], "OCTUBRE", "10")
$sBoletin[0] = StringReplace($sBoletin[0], "NOVIEMBRE", "11")
$sBoletin[0] = StringReplace($sBoletin[0], "DICIEMBRE", "12")
; Escribimos en el .INI el boletin.
If IniRead($Archivo_INI, $sBoletin[0] & "_tx", "Num", "No") = "No" Then; si no existe
IniWrite($Archivo_INI, $sBoletin[0] & "_tx", "Num", UBound($sBoletin) - 1) ; Guarda el nº de lineas que contiene el boletin.
For $x = 0 To UBound($sBoletin) - 1 ;Guarda las lineas de informacion.
IniWrite($Archivo_INI, $sBoletin[0] & "_tx", $x, $sBoletin[$x])
Next
Else ; si lee un valor anterior, hacemos la comparacion.
;Primero si el nº de elementos es igual:
If (UBound($sBoletin) - 1) = IniRead($Archivo_INI, $sBoletin[0] & "_tx", "Num", "No") Then ; hay el mismo nº de elementos. Comparamos cada elemento.
For $x = 0 To UBound($sBoletin) - 1
If IniRead($Archivo_INI, $sBoletin[0] & "_tx", $x, "") <> $sBoletin[$x] And $sBoletin[$x] <> "" Then ; si son distintos y hay dato.
; Escribimos
If $Debug Then MsgBox(0, 0, "Escribe", 5)
IniWrite($Archivo_INI, $sBoletin[0] & "_tx", $x, $sBoletin[$x])
Else ; Si estan los mismos datos.
If $Debug Then MsgBox(0, 0, "No Escribe", 5)
;nada
EndIf
Next
Else ; si no hay el mismo nº de elementos.
;borramos todos los del INI de esa seccion.
For $x = 0 To IniRead($Archivo_INI, $sBoletin[0] & "_tx", "Num", "No")
IniDelete($Archivo_INI, $sBoletin[0] & "_tx", $x)
Next
IniDelete($Archivo_INI, $sBoletin[0] & "_tx")
;cargamos los nuevos datos.
IniWrite($Archivo_INI, $sBoletin[0] & "_tx", "Num", UBound($sBoletin) - 1)
For $x = 0 To UBound($sBoletin) - 1
IniWrite($Archivo_INI, $sBoletin[0] & "_tx", $x, $sBoletin[$x])
Next
EndIf
EndIf
#endregion Fecha
Else ; SI hay error al coger los datos de la WEB.
#region --- CodeWizard generated code Start ---
;MsgBox features: Title=Yes, Text=Yes, Buttons=OK, Icon=Warning, Timeout=5 ss
If Not IsDeclared("iMsgBoxAnswer") Then Local $iMsgBoxAnswer
$iMsgBoxAnswer = MsgBox(48, "Error de Boletín", "Se ha producido un error al obtener los datos del boletín..." & @CRLF & @CRLF & "Se seguirán buscando los datos numéricos.", 5)
#endregion --- CodeWizard generated code Start ---
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $HTMLSource = ' & $HTMLSource & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $Antes & "(?s)(.*?)" & $Despues = ' & $Antes & "(?s)(.*?)" & $Despues & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : @error = ' & @error & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
EndIf
#endregion Boletin De comentarios
#region Obtener Valores diarios
$Antes = '<td><p class="p">' ; Cadena inicio para la extraccion de StringRegExp
$Despues = "</td>" ; Cadena fin para la extraccion de StringRegExp
$sTablaResultados_Codigos = StringRegExp($HTMLSource, $Antes & "(?s)(.*?)" & $Despues, 3) ;Obtenemos los valores en un Array
Dim $sTablaResultados2[UBound($sTablaResultados_Codigos)][2] ;preparamos un 2º Array para limpiar los codigos.
For $x = 0 To UBound($sTablaResultados_Codigos, 1) - 1
$sTablaResultados2[$x][0] = $sTablaResultados_Codigos[$x] ; en la columna 0, guardamos el original.
$sTablaResultados2[$x][1] = StringRegExpReplace($sTablaResultados_Codigos[$x], "[^[:alnum:] áéíóú,<. "" = />]", " ") ;quitamos todo lo que no sea necesario
$sTablaResultados2[$x][1] = StringRegExpReplace($sTablaResultados2[$x][1], " ", " ") ;Quitamos los espacios existentes reemplazando 2 espacios por uno.
While @extended ; Mientras encuente espacios dobles, ejecutar.
$sTablaResultados2[$x][1] = StringRegExpReplace($sTablaResultados2[$x][1], " ", " ") ;Quitamos los espacios existentes reemplazando 2 espacios por uno.
WEnd
$sTablaResultados2[$x][1] = StringStripWS(StringRegExpReplace($sTablaResultados2[$x][1], "</p>", " "), 3) ; Quitar etiqueta </p>
$sTablaResultados2[$x][1] = StringRegExpReplace($sTablaResultados2[$x][1], "á", "a") ;Quitamos tildes
$sTablaResultados2[$x][1] = StringRegExpReplace($sTablaResultados2[$x][1], "é", "e");Quitamos tildes
$sTablaResultados2[$x][1] = StringRegExpReplace($sTablaResultados2[$x][1], "í", "i");Quitamos tildes
$sTablaResultados2[$x][1] = StringRegExpReplace($sTablaResultados2[$x][1], "ó", "o");Quitamos tildes
$sTablaResultados2[$x][1] = StringRegExpReplace($sTablaResultados2[$x][1], "ú", "u");Quitamos tildes
Next
If $Debug = 1 Then _ArrayDisplay($sTablaResultados2, "Resultados", -1, 0, "", "", "Nº|Original|Limpio")
#endregion Obtener Valores diarios
#region Extraemos y relacionamos los datos diarios con la fecha
Dim $sTablaAlmacen[8][2] ; Preparamos una tabla para guardar el par Fecha-Valor.
Dim $Primero, $Ultimo
;tipos
$sTablaAlmacen[0][0] = $sTablaResultados2[0][1] ; El primer dato, va directo (Polen/Fecha)
; Miramos hasta donde son Fecha:
For $x = 0 To UBound($sTablaResultados_Codigos) - 1
If StringInStr($sTablaResultados2[$x][1], "Lunes") Or _
StringInStr($sTablaResultados2[$x][1], "Martes") Or _
StringInStr($sTablaResultados2[$x][1], "Miercoles") Or _
StringInStr($sTablaResultados2[$x][1], "Jueves") Or _
StringInStr($sTablaResultados2[$x][1], "Viernes") Or _
StringInStr($sTablaResultados2[$x][1], "Sabado") Or _
StringInStr($sTablaResultados2[$x][1], "Domingo") Then
If $Primero = 0 Then $Primero = $x
$Ultimo = $x
EndIf
Next
;Fechas
If UBound($sTablaAlmacen) >= $Ultimo + 2 Then
If $Debug Then ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $Primero = ' & $Primero & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
If $Debug Then ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : UBound($sTablaAlmacen) = ' & UBound($sTablaAlmacen) & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
Dim $i = 1
For $x = $Primero To $Ultimo ; Guardamos las fechas
$sTablaAlmacen[$i][0] = $sTablaResultados2[$x][1]
$i += 1
Next
$sTablaAlmacen[0][1] = $sTablaResultados2[$Ultimo + 1][1] ;Guardamos el dato tipo de polen ('Gramineas') en la columna1
; datos para la fecha.
$i = 1
For $x = $Ultimo + 2 To $Ultimo + ($Ultimo - $Primero) + 2
$sTablaAlmacen[$i][1] = $sTablaResultados2[$x][1]
$i += 1
Next
If $Debug = 1 Then _ArrayDisplay($sTablaAlmacen, "Resultados")
#endregion Extraemos y relacionamos los datos diarios con la fecha
Escribe_INI($sTablaAlmacen)
Grafico()
Else ; Si la pagina esta 'rara'
If Not IsDeclared("iMsgBoxAnswer") Then Local $iMsgBoxAnswer
$iMsgBoxAnswer = MsgBox(16, "Error de Acceso", "La tabla de la pagina no esta correctametne formada... Esperar a otro momento." & @CRLF & @CRLF & StringLeft($URL, 25) & "..." & @CRLF & @CRLF, 10)
ShellExecuteWait($URL_Base)
;~ _ArrayDisplay($sTablaAlmacen)
EndIf
Else ; si ha habido mas de 10 intentos.
#region --- CodeWizard generated code Start ---
;MsgBox features: Title=Yes, Text=Yes, Buttons=OK, Icon=Critical, Timeout=10 ss
If Not IsDeclared("iMsgBoxAnswer") Then Local $iMsgBoxAnswer
$iMsgBoxAnswer = MsgBox(16, "Error de Acceso", "No se ha podido acceder a la pagina solicitada." & @CRLF & @CRLF & StringLeft($URL, 25) & "..." & @CRLF & @CRLF, 10)
#endregion --- CodeWizard generated code Start ---
EndIf
Exit
#cs
Modelo de datos en INI:
[Datos Polen/Fecha-Gramineas]
Jueves 10/5/2012=0
Viernes 11/5/2012=0
Sabado 12/5/2012=0
Domingo 13/5/2012=12
Lunes 14/5/2012=0
Martes 15/5/2012=1
Miercoles 16/5/2012=3
#ce
;----------------------------------------------------
;----------------------------------------------------
;----------------------------------------------------
#region Funciones de proceso
;----------------------------------------------------
;----------------------------------------------------
;----------------------------------------------------
#region Escribe INI
Func Escribe_INI(ByRef $sTablaAlmacen)
; ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : Escribe_INI = ' & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
For $x = 1 To UBound($sTablaAlmacen) - 1
If IniRead($Archivo_INI, "Datos " & $sTablaAlmacen[0][0] & "-" & $sTablaAlmacen[0][1], $sTablaAlmacen[$x][0], '') = '' Then ; si no existe el dato.
If $sTablaAlmacen[$x][0] And $sTablaAlmacen[$x][1] Then ; si hay datos.
IniWrite($Archivo_INI, "Datos " & $sTablaAlmacen[0][0] & "-" & $sTablaAlmacen[0][1], $sTablaAlmacen[$x][0], $sTablaAlmacen[$x][1])
; ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sTablaAlmacen[$x][0], $sTablaAlmacen[$x][1] = ' & $sTablaAlmacen[$x][0] & " " & $sTablaAlmacen[$x][1] & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
EndIf ; si hay datos.
EndIf ; si no existe.
Next
If $Debug = 1 Then _ArrayDisplay($sTablaAlmacen)
If Not @Compiled And $Debug Then
Run("notepad.exe C:\Documents and Settings\n854750\Mis documentos\AutoIT\jxo\Alergias\SEAIC.ini", @ScriptDir)
Else
#region --- CodeWizard generated code Start ---
;MsgBox features: Title=Yes, Text=Yes, Buttons=OK, Icon=Info, Timeout=2 ss, Miscellaneous=Top-most attribute
If Not IsDeclared("iMsgBoxAnswer") Then Local $iMsgBoxAnswer
$iMsgBoxAnswer = MsgBox(262208, "Datos SEAIC", "Se han recogido los datos.", 2)
#endregion --- CodeWizard generated code Start ---
EndIf
EndFunc ;==>Escribe_INI
#endregion Escribe INI
#region graficas
Func Grafico()
; ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : Grafico = ' & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
#region Formulario
;~ $Debug = 0 ; Cambiar si se quiere depurar solo el grafico.
Dim $f_Alto = 500
Dim $f_Ancho = 600
Global $Form1 = GUICreate("Evolucion", $f_Ancho, $f_Alto)
;~ Dim $Graf1= GUICtrlCreateGraphic(50,50,$f_Ancho,$f_Alto,$SS_BLACKFRAME)
;~ Dim $hPen = _GDIPlus_PenCreate (0xF5F8FD,10,1)
_GDIPlus_Startup()
Dim $hGraphic = _GDIPlus_GraphicsCreateFromHWND($Form1)
Global $hPen = _GDIPlus_PenCreate(0x55F0F4F9, 1, 2)
; ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $hPen @Error= ' & @error & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
GUISetState(@SW_SHOW)
#endregion Formulario
#region Carga Valores
$TablaValores = IniReadSection($Archivo_INI, "Datos Polen/Fecha-Gramineas")
If $Debug Then _ArrayDisplay($TablaValores, "Valores en INI")
$Ancho_Series = $f_Ancho / UBound($TablaValores) - 1
; ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : UBound($TablaValores) = ' & UBound($TablaValores) & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
#endregion Carga Valores
#region Linea de datos
Dim $xPos0 = $Ancho_Series
Dim $yPos0 = $f_Alto - (($TablaValores[1][1] + 1) * 2) - 1
Dim $xPos, $yPos
For $x = 1 To UBound($TablaValores) - 1
$xPos = $Ancho_Series * $x
$yPos = $f_Alto - (($TablaValores[$x][1] + 1) * 2) - 1
_GDIPLUS_GraphicsDrawLine($hGraphic, $xPos0, $yPos0, $xPos, $yPos)
$xPos0 = $xPos
$yPos0 = $yPos
Next
#endregion Linea de datos
#region Lineas de ejes
; Lineas Horizontales
For $i = 0 To $f_Alto Step $f_Alto / 10
_GDIPlus_GraphicsDrawLine($hGraphic, 0, ($f_Alto - $i), $f_Ancho, ($f_Alto - $i), $hPen)
GUICtrlCreateLabel($i / 2, 0, $f_Alto - $i + 3, 17, 17) ; Escala de Y
Next
; Lineas Verticales
For $i = 1 To UBound($TablaValores) - 1
_GDIPlus_GraphicsDrawLine($hGraphic, ($f_Ancho - $i * $Ancho_Series), 0, ($f_Ancho - $i * $Ancho_Series), $f_Alto, $hPen)
Display_Rotated_Text($Form1, $TablaValores[$i][0], $f_Ancho - ($f_Ancho - ($i - 1) * $Ancho_Series) + $Ancho_Series, 120, 90, 20, 14)
;~ GUICtrlCreateLabel($TablaValores[$i][0], $f_Ancho - ($f_Ancho - ($i-1) * $Ancho_Series) + $Ancho_Series, 0, 50, 50) ;Escala de X
GUICtrlCreateLabel($TablaValores[$i][1], $f_Ancho - ($f_Ancho - ($i - 1) * $Ancho_Series) + $Ancho_Series, $f_Alto - 180, 50, 50) ;Valor del punto
Next
#endregion Lineas de ejes
$ir_Web = GUICtrlCreateButton("Ir al WEB", $f_Ancho - 60, $f_Alto / 2)
Do
;~ _WinAPI_RedrawWindow ($Form1)
$nMsg = GUIGetMsg()
If $nMsg = $ir_Web Then ShellExecuteWait($URL_Base)
Until $nMsg = $GUI_EVENT_CLOSE
_GDIPlus_PenDispose($hPen)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_ShutDown()
Exit
EndFunc ;==>Grafico
#endregion graficas
#region Texto en Vertical
Func Display_Rotated_Text($hGUI, $text, $px, $py, $angle = 90, $tw = 400, $th = 12, $tcolor = 0x000000, $bcolor = 0xF0F0F0, $font = 'Arial', $transparent = True)
Local $tRect, $rotate, $RotateMe, $rFont, $hDC
; Create RECT-structure, fill data
$tRect = DllStructCreate($tagRECT)
DllStructSetData($tRect, 'Left', $px)
DllStructSetData($tRect, 'Top', $py)
; Set rotation
$rotate = $angle * 10
; Create structure for rotate text, fill data
$RotateMe = DllStructCreate($tagLOGFONT)
DllStructSetData($RotateMe, 'Escapement', $rotate)
DllStructSetData($RotateMe, 'Weight', $tw)
DllStructSetData($RotateMe, 'Height', $th)
DllStructSetData($RotateMe, 'FaceName', $font)
; Creates a logical font that has specific characteristics
$rFont = _WinAPI_CreateFontIndirect($RotateMe)
; Retrieves a handle of a display device context for the client area a window
$hDC = _WinAPI_GetDC($hGUI)
; Set text- and back color
_WinAPI_SetTextColor($hDC, $tcolor)
_WinAPI_SetBkColor($hDC, $bcolor)
If $transparent Then _WinAPI_SetBkMode($hDC, $transparent)
; Selects an object into the specified device context
_WinAPI_SelectObject($hDC, $rFont)
; Draws formatted text in the specified rectangle
_WinAPI_DrawText($hDC, $text, $tRect, $DT_NOCLIP + $DT_NOPREFIX)
$tRect = 0
EndFunc ;==>Display_Rotated_Text
#endregion Texto en Vertical
;----------------------------------------------------
;----------------------------------------------------
;----------------------------------------------------
#endregion
;----------------------------------------------------
;----------------------------------------------------
;----------------------------------------------------
Este es un modelo del .INI guardado:
Código: Seleccionar todo
[Datos Polen/Fecha-Gramineas]
Jueves 10/5/2012=0
Viernes 11/5/2012=0
Sabado 12/5/2012=0
Domingo 13/5/2012=12
Lunes 14/5/2012=0
Martes 15/5/2012=1
Miercoles 16/5/2012=3
Jueves 17/5/2012=3
Viernes 18/5/2012=8
Sabado 19/5/2012=1
Domingo 20/5/2012=0
Lunes 21/5/2012=0
Martes 22/5/2012=0
Miercoles 23/5/2012=7
Jueves 24/5/2012=1
Viernes 25/5/2012=20
Sabado 26/5/2012=1
Domingo 27/5/2012=0
Lunes 28/5/2012=8
Martes 29/5/2012=0
Miercoles 30/5/2012=6
Jueves 31/5/2012=9
Viernes 1/6/2012=0
Sabado 2/6/2012=0
Domingo 3/6/2012=0
Lunes 4/6/2012=0
Martes 5/6/2012=1
Miercoles 6/6/2012=1
Jueves 7/6/2012=1
Viernes 8/6/2012=6
Sabado 9/6/2012=8
Domingo 10/6/2012=1
[20/05/2012_tx]
Num=4
0=20/05/2012
1=GRAMINEAS: niveles BAJOS, con 1-2 granos/m3 de aire
2=OLIVO: niveles BAJOS, con 0-1 granos/m3 de aire
3=QUERCUS: niveles BAJOS, con 1-2 granos/m3 de aire
4=PINUS: niveles BAJOS, con 0-1 granos/m3 de aire
[27/05/2012_tx]
Num=4
0=27/05/2012
1=Niveles BAJOS de polen de GRAMINEAS, con media de 3 granos/m3 de aire
2=Niveles BAJOS de polen de OLIVO, con media de 1 granos/m3 de aire
3=Niveles BAJOS de polen de QUERCUS, con media de 2 granos/m3 de aire
4=Niveles BAJOS de polen de PINUS, con media de 2 granos/m3 de aire
[3 06_tx]
Num=4
0=3 06
1=Niveles MEDIOS de PINUS, con 11 granos/m3 de aire.
2=Niveles MEDIOS de GRAMINEAS: con 3 granos/m3 de aire, que junto con las predicciones meteorologicas para la semana proxima, la fecha y los sintomas de pacientes en la actual, hacen prever que los niveles estaran mas altos.
3=Niveles BAJOS de OLIVO, con 0-1 granos/m3 de aire.
4=Niveles BAJOS de PLANTAGO, con 0-1 granos/m3 de aire.
[10/06/2012_tx]
Num=4
0=10/06/2012
1=Niveles MEDIOS de polen de GRAMINEAS (POA), con media de 7 granos/m3 de aire
2=Niveles MEDIOS de polen de PINUS, con media de 8 granos/m3 de aire
3=Niveles BAJOS de polen de OLIVO, con media de 1-3 granos/m3 de aire
4=Niveles BAJOS de polen de PLANTAGO, con media de 1 granos/m3 de aire
[06, con importante precipitacion y bajada/temperaturas._tx]
Num=0
0=06, con importante precipitacion y bajada/temperaturas.
[SEMANA 11-17/06/2012_tx]
Num=4
0=SEMANA 11-17/06/2012
1=Niveles MEDIOS de gramíneas con media de 2 granos/m3 de aire.
2=Niveles MEDIOS de pino, con media de 3 granos/m3 de aire.
3=Niveles BAJOS de olivo con media de 1 grano/m3 de aire.
4=Niveles BAJOS de Plantago, con media de 1 grano/m3 de aire.