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 (2019-07-24 - Version 1.3.6.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-11-07 - Version 1.3.0.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 (2019-07-24 - Version 1.3.6.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-11-07 - Version 1.3.0.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 (2019-07-24 - Version 1.3.6.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-11-07 - Version 1.3.0.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 Saravanan2213
      Hi everyone,
      i just need your help. i have script for cleaning browsing history and other unwanted file but the problem is i don't want to see the GUI i have attached below. It should not show anything on the screen. is it possible to do it in autoit. thanks in advance.
       
      So for i have tried flag
      Run("rundll32.exe InetCpl.cpl,ClearMyTracksByProcess 255", "", @SW_HIDE)
      @SW_DISABLE
       
      Looking forward your help.........

    • By AutoitMike
      Scite 3.4.4
      Win 10
      I click "Help" or press F1, there is no response
      If I use the file explorer and double click Autoit.chm or Autoit3.chm help opens.
      There is no dialog to check or uncheck "Always ask before opening this file" when clicking on these files.
       
      If you are curious as to why I dont have the latest version, I am creating a back up laptop that has a VERY extensive automation application that I have written over the past 15 years.
       
      An extremely potent, powerful, needed function has been deleted in the upgrade of Autoit in recent years that I can not do without. If my main laptop dies, which it almost did, I am in a very bad position. So I bought the exact same laptop and I am "cofiguring" it to work exactly the same as my main laptop. However, this one has been "Upgraded" to Win 10 which I hope is not the problem. 
      Thanks for any help
    • By cptHark
      Hello I want to conect to a Network with DriveMapAdd.
      This worked just fine but when you restart the Computer the Mapped drive is gone.
      So i used the persistent mapping flag and that seemed to work, too.
      However when the Computer is restarted I cant connect to the Network because it doesnt remember the Username and password I ave it the first time.
      How do I fix this?
      My Code:Func
      setdrivem()
          DriveMapAdd("M:", GUICtrlRead($driveM),1, GUICtrlRead($netzuser),GUICtrlRead($netzpassword) )
      EndFunc
      $netzuser and $netzpassword are set earlier in the gui and it works right after executing the script but i want it to stay connected
    • By nooneclose
      Morning, I am wondering is there is a way to prevent a script from ending/crashing when a "Subscript used on non-accessible variable" error occurs? 
      Here is some of my code:
      $aItems = _OL_ItemFind($oOutlook, $mFolder[1], $olMail, "[UnRead]=True", "Subject", "Maintenance Request", "EntryID,Subject", "", 0) If @error Then Sleep(2000) LoopUnreadEmails() ;Exit MsgBox(48, "", "@error = " & @error & ", @extended: " & @extended & " at line: " & @ScriptLineNumber) EndIf Error Msg:
      (371) : ==> Subscript used on non-accessible variable.: $aItems = _OL_ItemFind($oOutlook, $mFolder[1], $olMail, "[UnRead]=True", "Subject", "Maintenance Request", "EntryID,Subject", "", 0) $aItems = _OL_ItemFind($oOutlook, $mFolder^ ERROR I know that error occurs very rarely and at random. But like with most errors "in this case" I can use recursion to fix it. 
      I just recall the function and it will and has fixed itself. But this "Subscript used on non-accessible variable" just ends the script.
      Like I said before, is there a way to allow the script to keep running or call a function when this error occurs instead of just ending?   
    • By max23ed
      Hi,  i'm recording a setup for a program using mouse clicks , however, the problem is when the setup installs (the progress bar showing) the auto generated script by the recorder will not have a winwait() or sleep() to click the "finish" button when the setup is completed. is there anyway to  do that automatically?
×
×
  • Create New...