Jump to content

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

 

Link to comment
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.

 

 

Link to comment
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...

Link to comment
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 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Link to comment
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

Link to comment
Share on other sites

Then simply remove "Global" to increment the variable:

$ImageCount += 1

 

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Link to comment
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"

Link to comment
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
Link to comment
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 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Link to comment
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.

Link to comment
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

Link to comment
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.

Link to comment
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

 

Link to comment
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.

Link to comment
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
 Share

×
×
  • Create New...