Jump to content
Sign in to follow this  
6105

How to count rows in _StringBetween

Recommended Posts

6105

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
BrewManNH

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
6105

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
kylomas

6105,

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

kylomas

  • Like 1

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  

  • Similar Content

    • ruslanas402
      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?
       
    • souldjer777
      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!
       
    • 6105
      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.
    • johnmcloud
      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
    • johnmcloud
      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
×