Auf einen bestimmten Preis prüfen

Top  Previous  Next

Dieses Beispiel extrahiert einen bestimmten Preis von einer vorgegebenen Seite und meldet nur dann ein Update, falls der Preis kleiner einem vorgegebenen Preis ist. Das Auslesen eines Preises ist von der jeweiligen Seite abhängig und muss individuell angepasst werden, der folgende Beispielcode kann dabei als Starthilfe dienen.

 

Eine Alternative für dieses Plugin könnte die regexcmp Funktion sein, die in Ignorieren-Filter, Überwachen-Filter sowie in der Keywords Funktionalität verwendet werden kann.

 

Sub ExtractPrice(sMem, ByRef nPrice)

 

 Dim p, nLen

 

   nPrice = -1

   sMem = DeleteHtmlTags(sMem)

   ' Extract price without decimal places

   If FindRegex(sMem, "Price:\s*EUR\s*\d+,", p, nLen) Then

      sMem = ExtractDigits(Copy(sMem, p, nLen))

      nPrice = StrToIntDef(sMem, -1)

   End If

End Sub

 

'*******************************************************************************

 

Sub Wsw_CompareVersions(Handle, ByRef sMemWeb, ByRef sMemLocal, ByRef sStatusMessage, ByRef iStatusCode)

 

 Dim nPriceNew , nPriceOld, nPriceRef

 

   ' Define reference price (100 EUR)

   nPriceRef = 100

 

   ' Extract price from new/local version

   ExtractPrice(sMemWeb, nPriceNew)

   ExtractPrice(sMemLocal, nPriceOld) ' only needed to speed up several WSW routines

 

   ' Return only price - speed up several WSW routines, eg. "Test filter" dialog or "Analyze" functionality

   sMemWeb = IntToStr(nPriceNew)

   sMemLocal = IntToStr(nPriceOld)

 

   If nPriceNew = -Then

      iStatusCode = 2

      sStatusMessage = "Error extracting price"

   ElseIf (nPriceNew <> nPriceOld) And (nPriceNew <= nPriceRef) Then

      iStatusCode = 1

      sStatusMessage = "Price changed and lower than EUR " + IntToStr(nPriceNew)

   ElseIf (nPriceNew <> nPriceOld) And (nPriceNew > nPriceRef) Then

      iStatusCode = 0

      sStatusMessage = "Price too high"

   Else

      iStatusCode = 0

      sStatusMessage = "Price unchanged"

   End If

End Sub