Jump to content
rm4453

Can't Get += to work properly...

Recommended Posts

I keep getting error : Statement cannot be just an expression.

Here are the 3 error variations it gives:

Global $ImageCount += 1

~~~~~~~~~~~~~~~~~~~~~^

Global $ImageCount += 1

~~~~~~~~~~~~~~~~~~~~^

Global $ImageCount +=

~~~~~~~~~~~~~~~~~~~^

Here is the code:

Case $Image1
            ;GUICtrlSetState($Image1, 4+128)
            GUICtrlSetState($Image2, 64)
            $Image1_done = 1
            OpenImages()
            Global $Image1_added = $imagePath
            ;MsgBox("Info", "Image 1 Path", $Image1_added)
            OpenEditBox()
            Global $Image1_Description = $editBox_save
            If $im1 = 0 Then
                Global $ImageCount += 1
                $im1 = 1
            EndIf
        Case $Image2
            If $Image1_done = 1 Then
                ;GUICtrlSetState($Image2, 4+128)
                GUICtrlSetState($Image3, 64)
                OpenImages()
                Global $Image2_added = $imagePath
                ;MsgBox("Info", "Image 2 Path", $Image2_added)
                OpenEditBox()
                Global $Image2_Description = $editBox_save
                $Image2_done = 1
                If $im2 = 0 Then
                    Global $ImageCount += 1
                    $im2 = 1
                EndIf
            Else
            EndIf
        Case $Image3
            If $Image2_done = 1 Then
                ;GUICtrlSetState($Image3, 4+128)
                GUICtrlSetState($Image4, 64)
                OpenImages()
                Global $Image3_added = $imagePath
                ;MsgBox("Info", "Image 3 Path", $Image3_added)
                OpenEditBox()
                Global $Image3_Description = $editBox_save
                $Image3_done = 1
                If $im3 = 0 Then
                    Global $ImageCount += 1
                    $im3 = 1
                EndIf
            Else
            EndIf
        Case $Image4
            If $Image3_done = 1 Then
                ;GUICtrlSetState($Image4, 4+128)
                GUICtrlSetState($Image5, 64)
                OpenImages()
                Global $Image4_added = $imagePath
                ;MsgBox("Info", "Image 4 Path", $Image4_added)
                OpenEditBox()
                Global $Image4_Description = $editBox_save
                $Image4_done = 1
                If $im4 = 0 Then
                    Global $ImageCount += 1
                    $im4 = 1
                EndIf
            Else
            EndIf
        Case $Image5
            If $Image4_done = 1 Then
                ;GUICtrlSetState($Image5, 4+128)
                GUICtrlSetState($Image6, 64)
                OpenImages()
                Global $Image5_added = $imagePath
                ;MsgBox("Info", "Image 5 Path", $Image5_added)
                OpenEditBox()
                Global $Image5_Description = $editBox_save
                $Image5_done = 1
                If $im5 = 0 Then
                    Global $ImageCount += 1
                    $im5 = 1
                EndIf
            Else
            EndIf
        Case $Image6
            If $Image1_done = 1 Then
                ;GUICtrlSetState($Image6, 4+128)
                OpenImages()
                Global $Image6_added = $imagePath
                ;MsgBox("Info", "Image 6 Path", $Image6_added)
                OpenEditBox()
                Global $Image6_Description = $editBox_save
                If $im6 = 0 Then
                    Global $ImageCount += 1
                    $im6 = 1
                EndIf
            Else
            EndIf

 

Share this post


Link to post
Share on other sites

You can't increment a value on a variable that not exists yet.

$ImagenCount +=1 Mean that you are adding 1 to the previous value of $ImageCount, where is the previous value if you don't declare the variable before that operation?

You can initiate a variable like this:
$ImageCount = "" ; Initiate the variable with null value(empty).

Happy Coding...

Kind Regards
Alien.

 

 

Share this post


Link to post
Share on other sites
2 minutes ago, alien4u said:

You can't increment a value on a variable that not exists yet.

$ImagenCount +=1 Mean that you are adding 1 to the previous value of $ImageCount, where is the previous value if you don't declare the variable before that operation?

You can initiate a variable like this:
$ImageCount = "" ; Initiate the variable with null value(empty).

Happy Coding...

Kind Regards
Alien.

 

 

It is already declared sorry forgot to mention that...

It is declared as 0 at script startup Then is set to a value based off of ini it will never be bigger than 6 so I don't see how this is a problem...

Share this post


Link to post
Share on other sites

What do you expect $ImageCount to be after the statement? 1? Then use:

Global $ImageCount = 1

 


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2019-10-24 - Version 1.4.14.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2019-11-30 - Version 1.4.0.0) - Download - General Help & Support - Example Scripts - Wiki
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
Task Scheduler (NEW 2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

You're redeclaring it with the Global statement, so the above answer still stands.


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

Then simply remove "Global" to increment the variable:

$ImageCount += 1

 


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2019-10-24 - Version 1.4.14.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2019-11-30 - Version 1.4.0.0) - Download - General Help & Support - Example Scripts - Wiki
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
Task Scheduler (NEW 2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites
Just now, water said:

What do you expect $ImageCount to be after the statement? 1? Then use:

Global $ImageCount = 1

 

I expect $ImageCount to be anywhere in this range 1-6 "the script sets it to 6 if it is 6 or greater before it starts the Image upload that way it will loop no more than 6 times.... because the user is only able to select 6 images to upload"

Share this post


Link to post
Share on other sites

I don't fully understand what += 1 does i'm wanting it to increment the variable by 1 i don't care if it goes above 6 because the upload function sets it to 6 if it is 6 or greater that way it only loops 6 times...

 

This page specifies that this should work just fine....

https://www.autoitscript.com/autoit3/docs/intro/lang_operators.htm

Edited by rm4453
added link to extra info

Share this post


Link to post
Share on other sites

+=1 does exactly what you want: "i'm wanting it to increment the variable by 1"


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2019-10-24 - Version 1.4.14.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2019-11-30 - Version 1.4.0.0) - Download - General Help & Support - Example Scripts - Wiki
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
Task Scheduler (NEW 2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites
Just now, water said:

+=1 does exactly what you want: "i'm wanting it to increment the variable by 1"

Then why does it keep throwing the error? is it just a bug or something?

Share this post


Link to post
Share on other sites

As I already said: +=1 mean you will add 1 to the previous value of the variable.

If you have Global $ImageCount = "" (declaration of your variable) early in your code, then like BrewManNH said, you can't use Global $ImageCount +=1 again because with the Global statement your redeclaring your variable again but you can't do that using += because that is not the way you declare a variable, does not make any sense.

In the other hand I think the best way to do this is creating a function and send values to that function, so you can use an While loop when you finish your cases that will be better to count and no depend on Global variables.

Kind Regards
Alien.

Share this post


Link to post
Share on other sites
2 minutes ago, alien4u said:

As I already said: +=1 mean you will add 1 to the previous value of the variable.

If you have Global $ImageCount = "" (declaration of your variable) early in your code, then like BrewManNH said, you can't use Global $ImageCount +=1 again because with the Global statement your redeclaring your variable again but you can't do that using += because that is not the way you declare a variable, does not make any sense.

In the other hand I think the best way to do this is creating a function and send values to that function, so you can use an While loop when you finish your cases that will be better to count and no depend on Global variables.

Kind Regards
Alien.

So If I take Global off it should be fine?

Using the later of the two? ex:

Global $ImageCount += 1

$ImageCount +=1

Share this post


Link to post
Share on other sites
1 hour ago, rm4453 said:

I expect $ImageCount to be anywhere in this range 1-6 "the script sets it to 6 if it is 6 or greater before it starts the Image upload that way it will loop no more than 6 times.... because the user is only able to select 6 images to upload"

If you set the value of $ImageCount to 6 when you first declare it and you increment that by 1 how to do expect to the script will work if your final condition or your loop stop at 6?
Or Im missing something here?

Kind Regards
Alien.

Share this post


Link to post
Share on other sites
Just now, alien4u said:

If you set the value of $ImageCount to 6 when you first declare it and you increment that by 1 how to do expect to the script will work if your final condition or your loop stop at 6?
Or Im missing something here?

Kind Regards
Alien.

 

I saw that error and modified the Do loop to include an extra if statement here it is:

 

If $ImageCount >= 6 Then
    $ImageCount = 6
EndIf

 

Share this post


Link to post
Share on other sites

Yes it should.

Outside your case or loop or anything that is repetitive you declare your Global var:
Global $ImageCount = ""

And inside the Case, or Loop or repetitive task you increment your var:
$ImageCount +=1

Kind Regards
Alien.

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

  • Similar Content

    • By topgundcp
      Hi, 
      This is my very first post in this forum and am also new with Autoit programming so be easy on me.
      Below is the code that I am trying to get the index of the item selected. No problem getting the text.
      Case $listEdition   ; handle of the list             local $index=0             $item=GUICTRLRead($listEdition)    ; This will return the text in the list             ; ==============   The loop below always fails  ==================             ; Meaning _GUICtrlListView_GetItemSelected($listEdition, $i) always return FALSE. WHY ???????              For $i = 0 To $editionArray[0] - 1   ; The content of the list in an array where editionArray[0] contains total count of items                 If _GUICtrlListView_GetItemSelected($listEdition, $i) Then                     $index = $i                     exitloop                 EndIf              Next              ;===================================================             ConsoleWrite( "Select Edition:     " & $item & "  index: " & $index & @CR) ....... Please look at the comments in the code & the pix attached.
      _GUICtrlListView_GetItemSelected($listEdition, $i) always returns FALSE.
      Another problem is on the list. It also populate  the total count of items from the Array. How can I skip this item from populating to the list ?.
      Please advise and thanks

    • By MarkIT
      Hi AutoIT masters,
      Good day! Sorry to have bothered this forum but we really need help. We are working on an automation project that is running on VDI server. The BOTS are in .exe are running fine until AV detected them and deleted the files. The files were re-compiled and AV kept on deleting them. The copy of the .exe BOT deleted were sent to Symantec for whitelisting. After whitelisting, it is no longer deleted but no longer working as designed (showing Line script error). We checked the scripts and there were no issues since we run it using SciTE editor and it performed the desired task. Good thing we found on this thread the solution using .a3x and the BOTS worked fine and no longer deleted. Now, the problem is they are asking why the BOTS won't run in .EXE and what is the reason behind Symantec AV deleting them. We raised a case with Symantec but they cannot provide further information as they are always seeing the file as "False Positive". We even tested with Symantec turned off and those .EXE files are working fine, however, after re-enabling, it got deleted.
      Just seeking help on how to better convince them that it is really Symantec causing the issue and the .a3x file.
    • By n0ktar
      is it possible to make a wall chams in rainbow six siege using autoit scripts? tell me please and how . 
    • By Rskm
      Hi, I am using excel as input media for my program. The excel file (i tried with .xls, .xlsx and .xlsm format) has inputs which the autoit script reads during the run and performs few calculations. Some times (not always), after the run, when i try to open the excel file manually, the file doesnt open at all in excel. see the screenshot attached. However, if the execute the autoit script, the scripts still reads the existing data from that excel and performs the calcs. I copied the excel file to another computer and there too, it doesnt open.  So, after this, i cannot edit the excel forever (if i need to change any inputs). It is only this particular file that got affected. other excel files works normal.  What could be the problem here.  please help as this is a new challenge for me during my program development. 

    • By TheAutomator
      Hi everyone!

      I'm using AutoIt for several years now and I really get the hang of it!
      I'm quite the curious OCD perfectionist kind of guy, so I can't help wondering..
      what would be the best way to program stuff for the compiler / interpreter / scripting engine?
      We're talking about the inner workings of the AutoIt's core here, and how to give it as less friction as possible but also take care of the machine running the script.
      For example,
      Imagine a script where we would constantly have to assign a Boolean value to a variable:
      ; A: local $bool = false $bool = true $bool = true $bool = false ; B: local $bool = false check(true) check(true) check(false) func check($b) if $bool = $b then return $bool = $b endfunc In this case, would it be better to just overwrite (A) the variable or first check if we really need to (B)?
      What would be best for the computers memory if it had to do this for a year non stop?
      Another example, imagine you're writing a function with an if statement.
      If you would look under the hood of AutoIt, what would be the best way to give your computer as less work / code nesting stack filling as possible:
      ; A: func decide($b_Input) if $b_Input then ;do something else ;do something else endif endfunc ; B: func decide($b_Input) if $b_Input then ;do something return endif ;do something else endfunc Last one for now:
      ; A: while 1 ; do stuff wend ; B: while true ; do stuff wend Isn't AutoIt taking an extra step in converting 1 to a Boolean in example (A)?
      Or is it the other way around and does the (B) way make AutoIt first convert a keyword (true or false) to a numerical value (0 or 1).
      I think this kinda detail stuff is quite interesting, makes me wonder how AutoIt converts and runs our code.
      What are your opinions on this topic?
      Any coders who know more about the inner workings of AutoIt?
      Any people like me who ask themselves similar questions (with examples)?

      Let me know! 😉
×
×
  • Create New...