Jump to content
Sign in to follow this  
6105

How to count rows in _StringBetween

Recommended Posts

Hi, have here some alternative method to count rows..

I can't use StringSplit coz array is already buided with _StringBetween, some tips pls,

Reproducer code:

#include <String.au3>
#include <Array.au3>
#include <IE.au3>
$file = @TempDir&'\au3test.tmp'
ConsoleWrite('File = '&$file&@CRLF)
$oIE = _IECreate('http://autoitscript.com/forum',0,0)
_IELoadWait($oIE)
$sHTML = _IEBodyReadHTML($oIE)
$wFile = FileWrite($file,$sHTML)
$nFileHTML = FileOpen($file, 0)
If @error then ConsoleWrite('error with FileOpen($file, 0)'&@CRLF)
While 1
Local $aArray[10], $aRead = FileReadLine($nFileHTML)
If @error then ExitLoop
$aSearch = StringInStr($aRead,'<LI><SPAN')
If $aSearch > 0 Then
  $aArray = _StringBetween($aRead, 'href="', '"')
  _ArrayDisplay($aArray)
EndIf
WEnd
ProcessClose('IEXPLORE.EXE')
FileDelete($file)

Thanks in advance for any tips.

Tedy.


[center][font=courier new,courier,monospace]Die die die my darling[/font][/center][center][font=courier new,courier,monospace]Don't utter a single word[/font][/center][center][font=courier new,courier,monospace]Die die die my darling[/font][/center][center][font=courier new,courier,monospace]Just shut your pretty mouth[/font][/center][center][font=courier new,courier,monospace]I'll be seeing you again[/font][/center][center][font=courier new,courier,monospace]I'll be seeing you[/font][/center][center][font=courier new,courier,monospace]In hell[/font][/center]

Share this post


Link to post
Share on other sites

What exactly are you looking for? What tips do you need?


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

Ok, i think that i resolved it,

i just need to read each line of _StringBetween,

and don't know how to stop loop coz don't know how many rows that have..

I think solution is by adding new while:

$i = 0[/size]
[size=3]While 1
$string = _ArrayToString($aArray,'',$i,$i)
If $string = '' then ExitLoop
ConsoleWrite($string&@CRLF)
MsgBox(0,'',$string)
$i+=1
WEnd

full code:

#include <String.au3>
#include <Array.au3>
#include <IE.au3>
$file = @TempDir&'au3test.tmp'
Dim $aArray[10]
ConsoleWrite('File = '&$file&@CRLF)[/size]
[size=3]$oIE = _IECreate('http://autoitscript.com/forum',0,0)
_IELoadWait($oIE)
$sHTML = _IEBodyReadHTML($oIE)
$wFile = FileWrite($file,$sHTML)
$nFileHTML = FileOpen($file, 0)
If @error then ConsoleWrite('error with FileOpen($file, 0)'&@CRLF)
While 1
Local $aRead = FileReadLine($nFileHTML)
If @error then ExitLoop
$aSearch = StringInStr($aRead,'<LI><SPAN')
If $aSearch > 0 Then
  $aArray = _StringBetween($aRead, 'href="', '"')
  _ArrayDisplay($aArray)
EndIf
WEnd[/size]
[size=3]$i = 0[/size]
[size=3]While 1
$string = _ArrayToString($aArray,'',$i,$i)
If $string = '' then ExitLoop
ConsoleWrite($string&@CRLF)
MsgBox(0,'',$string)
$i+=1
WEnd[/size]
[size=3]ProcessClose('IEXPLORE.EXE')
FileDelete($file)

[center][font=courier new,courier,monospace]Die die die my darling[/font][/center][center][font=courier new,courier,monospace]Don't utter a single word[/font][/center][center][font=courier new,courier,monospace]Die die die my darling[/font][/center][center][font=courier new,courier,monospace]Just shut your pretty mouth[/font][/center][center][font=courier new,courier,monospace]I'll be seeing you again[/font][/center][center][font=courier new,courier,monospace]I'll be seeing you[/font][/center][center][font=courier new,courier,monospace]In hell[/font][/center]

Share this post


Link to post
Share on other sites

6105,

If by "rows" you are refering to elements in an array use "ubound". See the help file.

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  

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By ruslanas402
      Why doesn't print the output??

      #include <String.au3> Global $x = 'gdsgklj fsdl dasfgh fsfef ghterfsd kia gdfhgfgdsgklj fsdl dasfgh fsfef' $z = _StringBetween($x, 'fsdl', 'kia') ConsoleWrite($z & @CRLF)
      Shouldn't it be
      dasfgh fsfef ghterfsd   instead of nothing?
       
    • By souldjer777
      Good Morning AutoIT Geniuses 

      I have version 3.3.14.1.
      I am experiencing an error with the default Array.au3 or _ArrayUnique 
      I believe it is with this single line in my au3 file...$aUniqueHostname = _ArrayUnique ($array01, 1)
      SendAndLog("GEN_CSVMinRowLimit01 - Started", $tempzipdir & '\' & $LogFileName01, True) ; CSV Minimum Row Limit (FYI - default was originally set to 5000) $array01 = $twoDarray MsgBox (0, "", "You are here 1") $aUniqueHostname = _ArrayUnique ($array01, 1) ; FYI - The program never makes it to here: MsgBox (0, "", "You are here 2") "C:\Program Files (x86)\AutoIt3\Include\array.au3" (2297) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
      If IsInt($aArray[$iBase]) Then
      If IsInt(^ ERROR
      ; Title .........: Array
      ; AutoIt Version : 3.3.14.1  
       ; Autocheck of first element
          If $iIntType = $ARRAYUNIQUE_AUTO Then
              If IsInt($aArray[$iBase]) Then
              ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
                  Switch VarGetType($aArray[$iBase])
                      Case "Int32"
                          $iIntType = $ARRAYUNIQUE_FORCE32
                      Case "Int64"
                          $iIntType = $ARRAYUNIQUE_FORCE64
                  EndSwitch
              Else
                  $iIntType = $ARRAYUNIQUE_FORCE32
              EndIf
          EndIf
      I don't believe I've ever seen an error in the default au3 files. Is this something I am doing wrong?
      I'm just trying to run my apps through the new version of AutoIT since the fix was put in for...
      AutoIt3Help.exe reworked and digitally signed I have looked at bug trackers...
      https://www.autoitscript.com/trac/autoit/ticket/3110
      https://www.autoitscript.com/trac/autoit/ticket/3078
      Is this related somehow - what version of AutoIT do you recommend I use?
      Thanks!
       
    • By 6105
      Hello,

      can someone give me some tips how i can read in _ArrayMax numbers with space?


      #include <Array.au3> Global $avArray[5] $avArray[1] = "500" $avArray[2] = " 1 450" $avArray[3] = "3" $avArray[4] = "4 998 " $max = _ArrayMax($avArray) MsgBox(0,'',$max) ; result is 500
      Thanks in advance.
    • By johnmcloud
      Hi guys, i have a simple question. Sometime i'm using _StringBetween for situation like this:

      $test = "asdtewe[asdsad231321132@#]" $string = _StringBetween($test,"[","]") ConsoleWrite($string)
      Result is:

      asdsad231321132@#
      But if i want to remove that piece of string? Example remove all character/number/symbol between "[" and "]", included the "[" "]"? For a result like this:

      asdtewe
      Someone can post an example?
      Thanks for support
    • By johnmcloud
      Hi guys, i have a little problem to set the @error to _StringBetween
      The script:

      While 1 $line = StdoutRead($CMDCommand) If @error Then ExitLoop $tmp = _StringBetween($line, "] ", '%') If Not @error Then $replace = StringReplace($tmp[0], "%", "") MsgBox(64, "Test", "string found") EndIf WEnd
      This script working, but i need to set something if the string don't match. I have try like this:


      While 1 $line = StdoutRead($CMDCommand) If @error Then ExitLoop $tmp = _StringBetween($line, "] ", '%') If Not @error Then $replace = StringReplace($tmp[0], "%", "") MsgBox(64, "Test", "string found") Else MsgBox(17, "Test", "no string found") EndIf WEnd
      But i have everytime the error MsgBox also if the string is found. Some advice?
      Thanks for support
×
×
  • Create New...