Jump to content
Sign in to follow this  
Kryten68

FileReadLine and process from two files.

Recommended Posts

Kryten68

Hi,

I'm trying to put a script together to automate same data input to a 3rd party GUI.

My data exists as line separated variables in two .txt files (tns.txt and dns.txt).

I need to read the first line from tns.txt and send it, then do stuff. Then send the 1st

line from dns.txt and do a bit more. Then repeat with line two from each file, and so on.

Here is what i have so far:-

Sleep(5000) ; Just to give me time to activate the 3rd party GUI.

$tn = FileOpen("D:\posh\tns.txt", 0) ; Open first file

$dn = FileOpen("D:\posh\dns.txt", 0) ; Open second file

; Read in lines of text until the EOF is reached

While 1 ; Begin LOOP

$tn = FileReadLine($tn) ; Read first tn value

$dn = FileReadLine($dn) ; Read first dn value

If @error = -1 Then ExitLoop ; test for error condition

Send($tn) ; send first tn value

Send("{enter}") ; send an enter key press

Send($dn) ; send the dn value

Send("{enter}") ; send an enter key press

Sleep(500) ; wait half a sec

WEnd ; repeat until ...

This is a simplified example of what I'm struggling with. If this would work then my bigger script will work too.

This example reads the first values and sends them just fine but just sends enter key presses for the other values.

It also seems to damage my tns.txt and dns.txt file too, filling them with return presses?

Any guidance much appreciated!

Thanks,

Stuart

FileClose($dn)

FileClose($tn)

Share this post


Link to post
Share on other sites
rasim

Example:

Run("notepad.exe", @WindowsDir)
WinWait("[Class:Notepad]") ;Just to give me time to activate the 3rd party GUI.
$hNotepad = WinGetHandle("[Class:Notepad]")

$readTNS = FileRead("D:\posh\tns.txt")
$readDNS = FileRead("D:\posh\dns.txt")

$tn = StringSplit(StringStripCR($readTNS), @LF)
$dn = StringSplit(StringStripCR($readDNS), @LF)

$Result = ""

For $i = 1 To $tn[0]
    If (UBound($dn) - 1) >= $i Then
        $Result &= $tn[$i] & @CRLF & $dn[$i] & @CRLF
    Else
        $Result &= $tn[$i] & @CRLF
    EndIf
Next

ControlSetText($hNotepad, "", "Edit1", $Result)

Share this post


Link to post
Share on other sites
Kryten68

Hi,

Thanks for this.

When I run this code notepad pops up but nothing else happens :)

Any thoughts appreciated!

Cheers,

Stuart

Share this post


Link to post
Share on other sites
bstjohn

$tn = FileOpen("D:\posh\tns.txt", 0)    ; Open first file
$dn = FileOpen("D:\posh\dns.txt", 0)  ; Open second file
                                                       ; Read in lines of text until the EOF is reached
While 1                                          ; Begin LOOP
    $tn = FileReadLine($tn)           ; Read first tn value
    $dn = FileReadLine($dn)          ; Read first dn value
        .
        .
        .
WEnd                                                 ; repeat until ...

Look at what you are doing. You create two file handles, $tn and $dn, then also use them as variables when you read from them.

Once you read data into those variables you overwrite your file handles. Subsequent reads will fail or yield unpredictable results.

Use different variables:

$tn_record = FileReadLine($tn)

$dn_record = FileReadLine($dn)

-Barry.

Edited by bstjohn

Share this post


Link to post
Share on other sites
rasim

Check path to text files.

Share this post


Link to post
Share on other sites
Kryten68

Look at what you are doing.

Your exactly right. Thats all that was wrong.

Thanks for pointing out my schoolboy error!

Cheers,

Stuart

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  

×