Jump to content
Sign in to follow this  
Dgameman1

Checking last line for text

Recommended Posts

Dgameman1

#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.10.2
 Author:         myName

 Script Function:
    Template AutoIt script.

#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here



;$x = 1
;while $x < 10
Sleep(200)


$log = "C:\Users\Daniel\Desktop\log"
$lastline = FileReadLine($log, -1)
$file = FileOpen($log, 0)
$read = FileRead($file)


   If StringRegExp($lastline, "Start") AND StringRegExp($lastline, "start") Then
      Send("S")
   Else
      ConsoleWrite("Fail" & @LF)
   EndIf


;$x= $x + 1

;WEnd

;$hFile = FileOpen($log, 2)
;FileClose($hFile)

Edited by Dgameman1

Share this post


Link to post
Share on other sites
kylomas

Try it like this...

#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.10.2
 Author:         myName

 Script Function:
    Template AutoIt script.

#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here

#include <date.au3>
#include <array.au3>

; create some test data

local $bGen = false
if $bGen then _GenTestData()

; start of your program ---------------------------------------------------------------------------

local $st = timerinit()
$alog = stringsplit(fileread(@scriptdir & '\test.txt'),@crlf,1)
if stringregexp($alog[$alog[0]-1],'(?i)start') then
    ConsoleWrite('Found start' & @LF)
Else
    ConsoleWrite('Fail' & @LF)
endif
ConsoleWrite(stringformat('Time to test for string = %2.4f',timerdiff($st)/1000)  & @LF)

; end of your program -----------------------------------------------------------------------------

func _GenTestData()
    local $st = timerinit()
    filedelete(@scriptdir & '\test.txt')
    local $aWords = stringsplit(fileread(@scriptdir & '\wordlist.txt'),@crlf,1), $sOut
    for $1 = 1 to 1000
        $sOut &= _now() & ' '
        for $2 = 1 to random(10,20,1)
            $sOut &= ' ' & $aWords[random(0,$aWords[0],1)]
        Next
        $sOut &= @CRLF
    next
    $sOut &= _now() & ' ' & ' Start' & @crlf
    filewrite(@scriptdir & '\test.txt',$sOut)
    ConsoleWrite(stringformat('Time to gen test data = %2.4f',timerdiff($st)/1000)  & @LF)
endfunc

kylomas

Edited by kylomas

Forum Rules         Procedure for posting code

"I like pigs.  Dogs look up to us.  Cats look down on us.  Pigs treat us as equals."

- Sir Winston Churchill

Share this post


Link to post
Share on other sites
Dgameman1

Woah woah, there's no simple fix for my code??

Share this post


Link to post
Share on other sites
kylomas

Yes...can you explain the $file and $read variables?

edit: and the sleep?

Edited by kylomas

Forum Rules         Procedure for posting code

"I like pigs.  Dogs look up to us.  Cats look down on us.  Pigs treat us as equals."

- Sir Winston Churchill

Share this post


Link to post
Share on other sites
kylomas

Try like this (regexp changed)...

#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.10.2
 Author:         myName

 Script Function:
    Template AutoIt script.

#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here



;$x = 1
;while $x < 10
Sleep(200)


$log = "C:\Users\Daniel\Desktop\log"
$lastline = FileReadLine($log, -1)
$file = FileOpen($log, 0)
$read = FileRead($file)


   If StringRegExp($lastline, "(?i)Start")  Then
      Send("S")
   Else
      ConsoleWrite("Fail" & @LF)
   EndIf


;$x= $x + 1

;WEnd

;$hFile = FileOpen($log, 2)
;FileClose($hFile)

Forum Rules         Procedure for posting code

"I like pigs.  Dogs look up to us.  Cats look down on us.  Pigs treat us as equals."

- Sir Winston Churchill

Share this post


Link to post
Share on other sites
Dgameman1

Why is it that your code worked while mine didn't?

 If StringRegExp($lastline, "Start") AND StringRegExp($lastline, "start") Then

That didn't work, yet

   If StringRegExp($lastline, "(?i)Start")  Then

did??

Share this post


Link to post
Share on other sites
kylomas

because it cannot be both "Start" and "start".  The "(?i)" tells the regexp to be case insensitive.

edit: what's with the extraneous fileopen, read and sleep?

edit2: you could also have used "or" instead of "and"

Edited by kylomas

Forum Rules         Procedure for posting code

"I like pigs.  Dogs look up to us.  Cats look down on us.  Pigs treat us as equals."

- Sir Winston Churchill

Share this post


Link to post
Share on other sites
kylomas

FYI,

Your script could be reduced to this...

#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.10.2
 Author:         myName

 Script Function:
    Template AutoIt script.

#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here


$log = @scriptdir & '\test.txt'
( StringRegExp(FileReadLine($log, -1), "(?i)Start") ) ? Send("S") : ConsoleWrite("Fail" & @LF)
;;SSSSS
Edited by kylomas

Forum Rules         Procedure for posting code

"I like pigs.  Dogs look up to us.  Cats look down on us.  Pigs treat us as equals."

- Sir Winston Churchill

Share this post


Link to post
Share on other sites
Dgameman1

 

FYI,

Your script could be reduced to this...

#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.10.2
 Author:         myName

 Script Function:
    Template AutoIt script.

#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here


$log = @scriptdir & '\test.txt'
( StringRegExp(FileReadLine($log, -1), "(?i)Start") ) ? Send("S") : ConsoleWrite("Fail" & @LF)
;;SSSSS

That seems beautiful except that if I'm looking for the letter S, even if the word has the letter S in it, it catches that =/

Share this post


Link to post
Share on other sites
kylomas

That seems beautiful except that if I'm looking for the letter S, even if the word has the letter S in it, it catches that =/

 

and you would expect that if you are looking for the letter S and a word has the letter S in it, not to find it????

edit: and you are introducing additional search criteria...

Edited by kylomas

Forum Rules         Procedure for posting code

"I like pigs.  Dogs look up to us.  Cats look down on us.  Pigs treat us as equals."

- Sir Winston Churchill

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.