Jump to content
Sign in to follow this  
AndyS19

Cannot fix "cannot open" in SciTE au3.properties file

Recommended Posts

I have a au3.properties file that adds a search command to the right click context menu.  This command does a FINDSTR on all .au3 files in the "Program Files" directory.  However, on 32 bit Windows 7 and 8.1 OS's, 32 bit executables are now run from a "Program Files (x86)" directory.

I have a construct that builds a path variable that holds the locations to search.  In this variable, I have both "Program Files" and "Program Files (x86)", as well as a directory that holds my library file.

The constructor looks like this:

findcmd="C:\Windows\System32\Findstr.exe"
myLib="C:\Andy\AutoIT-src\myLib"
where1="C:\Program Files\autoit3\include\*.au3" "C:\Program Files (x86)\autoit3\include\*.au3" $(myLib)\*.au3

Then in the command definition, I use it like this:

#   "Find Definitions"
# Look in the C:\Program Files (x86)\AutoIt3\Include directory for any .au3 file
# that has a definition for the currently selected word (or the word the
# cursor is on)
#
command.name.42.$(au3)=
command.42.$(au3)=$(findcmd) /N /R /I /C:"^global [0-9a-f].* $(CurrentWord) =" $(where1)
command.subsystem.42.$(au3)=0
command.save.before.42.$(au3)=2

The problem is that on 32 bit systems without the "Program Files (x86)" directory, I get this error:
    FINDSTR: Cannot open C:\Program Files (x86)\autoit3\include\*.au3

I think that what I need is an 'if then else' something like this:
 

if exists "C:\Program Files (x86)" then
    where1=""C:\Program Files (x86)" $(myLib)\*.au3
else
    where1=""C:\Program Files" $(myLib)\*.au3
endif

How can I conditionally define the search path?

Share this post


Link to post
Share on other sites

What about when you use these enviroment variable: $(ProgramW6432) & $(ProgramFiles) in your properties file? 
I guess one is empty in a x86 system so would return  "".

PS: Don't change au3.properties, but make all changes in SciTEUSer.properties as the override the au3.properties settings and never get lost with an update of the installation.

Jos

 


SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

I tried your example, but $(filePath) is replaced by an empty string.  Here's my new code with your suggested changes:
 

myLib=C:\Andy\AutoIT-src\myLib
# where1="C:\Program Files (x86)\autoit3\include\*.au3" $(myLib)\*.au3

Local $filePath
If FileExists("C:\Program Files (x86)") Then
    $filePath="C:\Program Files (x86)\autoit3\include\*.au3"
Els
    $filePath="C:\Program Files\autoit3\include\*.au3"
EndIf

$filePath=$(filepath) $(myLib)"\*.au3"

#  "Find References"
# Look in the C:\Program Files (x86)\AutoIt3\Include directory for any .au3 file
# that has references to the currently selected word (or the word the
# cursor is on)
#
command.name.41.$(au3)=
command.41.$(au3)=$(findcmd) /N /I /C:"$(CurrentWord)" $(filePath)
command.subsystem.41.$(au3)=0
command.save.before.41.$(au3)=2

When I highlight "SomeText" in my .au3 script and run command 41, here is what I see: 

>C:\Windows\System32\Findstr.exe /N /I /C:"SomeText"

So $(filePath) expanded to an empty string.  I tried using 'filePath' without the '$' and got similar results.  I'm not sure when to use filePath vs $filePath vs $(filePath).  Also the name concatenation on line 11 doesn't seem to work.

PS:  I put my au3.properties file in %SCITE_USERHOME%  (C:\Users\Andy\AppData\Local\AutoIt v3\SciTE).  A new install or upgrade will not override this directory.

 

Share this post


Link to post
Share on other sites
3 minutes ago, AndyS19 said:

PS:  I put my au3.properties file in %SCITE_USERHOME%  (C:\Users\Andy\AppData\Local\AutoIt v3\SciTE).  A new install or upgrade will not override this directory.

Somehow you have made a change to a production file since this wouldn't work if you didn't!  You really should only make changes to SciTEUser.properties!

 Jos


SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

Jos, from the SciTE documenation:

There are two environment variables, "SciTE_HOME" and "SciTE_USERHOME", which the user may set to override the standard locations of the global and/or the user properties files (this and the following applies to Windows and GTK): 

If SciTE_USERHOME is set then it is where the user properties files are found. 
If SciTE_HOME is set then it is where the global properties files are found. 
If only SciTE_HOME is set then it is where both the global and user properties files are found.

 

Share this post


Link to post
Share on other sites

I know what the environment variables are used for, but what I stated about properties files is still valid. ;)
So you maintain your own total set of standard properties files and update them each time SciTE4AutoIt3 is released?

Jos 


SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

We're getting a little off topic, but yes, I have my user properties files (au3.properties, etc.) in a local directory and merely copy them to the  %SCITE_USERHOME% directory and the next time I edit a .au3 file, the changes are applied.  I've been doing this through laptop and OS changes for years now.

Share this post


Link to post
Share on other sites

Ooh, disregard my suggestion then. I misread your question and did not realize you were working in the au3.properties file. I'm not exactly sure how that file is parsed, but I doubt you can use AutoIt syntax within it.


UHJvZmVzc2lvbmFsIENvbXB1dGVyZXI=

Share this post


Link to post
Share on other sites

So, the suggested if-else-endif was not correct.  I tested it with the conditions reversed and the same output is generated.  I wish there was a way to syntax check properties files.  I need to go back to my original question: 

How can I conditionally define the search path?

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 Bhooshan
      I need to mute an ongoing call on Microsoft teams without activating the window. Teams allows us to mute using shortcut key Ctrl+Shift+m but only when the window is active.
      # Used set option as ongoing call can be with any person which leads to change in Title Name.
      AutoItSetOption ( "WinTitleMatchMode", 2 ) 
      # I am not clear with the control ID which will be good to use here and also the key combination of ^M       
      ControlSend ( "Microsoft Teams", "", "[CLASS:Intermediate D3D Window; INSTANCE:1]", "{ctrl down}")
       
      Can anyone help...!!! 
       

    • By Sayed
      Hi there, 
      I'm new in AutoIt forms and using AutoIt to automate desktop application (able to automate the application normally but facing issue when I've to re-run the application twice within the same script...so need help in this please)
      here is the steps then followed by the issue in a brief : 
      1- run application . 
      2- do some actions (click menus,activate windows,set texts..)
      3- close the application. 
      4- run the application again & access the same controls.
      5- open the same windows again (like step 2)
      6- perform some validations (by getting texts from some text boxes)
      7- close the application again (and repeat 1-7 for 15 times in average )
      The issue 
      * all controls are accessible in the first run and actions done successfully on controls (for steps 1-3) BUT from the second run of the application from step-4 it's able to set focus only the main application window.
      Note: only unique properties used to while mapping the controls. 
      Error that appear in the console :
      UIAWrappers.au3" (1673) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.: $x = Int($t[1] + ($t[3] / 2)) $x = Int($t[1] + (^ ERROR  
      Simple spy code  of one of the controls that has this strange issue(menubar&view menu Item): 
      ;~ *** Standard code maintainable *** #include "UIAWrappers.au3" AutoItSetOption("MustDeclareVars", 1) _UIA_setVar("oP1","Title:=XXX;controltype:=UIA_WindowControlTypeId;class:=WindowsForms10.Window.8.app") ;main app form xxx _UIA_setVar("oP2","Title:=menuStrip1;controltype:=UIA_MenuBarControlTypeId;class:=WindowsForms10.Window.8.app") ;menuStrip1 ;~ $oUIElement=_UIA_getObjectByFindAll("View.mainwindow", "title:=View;ControlType:=UIA_MenuItemControlTypeId", $treescope_subtree) _UIA_setVar("oUIElement","Title:=View;controltype:=UIA_MenuItemControlTypeId;class:=") ;ControlType:=UIA_MenuItemControlTypeId;classname:=") ;~ Actions split away from logical/technical definition above can come from configfiles ;~_UIA_Action("oP1","highlight") _UIA_Action("oP1","setfocus") ;~_UIA_Action("oP2","highlight") _UIA_Action("oP2","setfocus") _UIA_action("oUIElement","highlight") ;~_UIA_action("oUIElement","click")  
       
    • By Fenzik
      Hello All!
      i suggest to set default encoding in Scite4 for Autoit 3 to UTF 8 with Bom encoding, format recommended also in Autoit Help.
      In last editor version, when i open new script, for example Czech characters (č, ř, ž) aren't correct.
      So when i change Encoding to UTF 8 with Bom from Default Code page property state, everithing seems to be OK.
      Thank you and sorry for potentialy duplicated content.
      Fenzik
    • By jitb
      I have an eof problem in SciTE. I keep gitting this knitsu at the end of the open sesion.
      Please see below. The file should end at line 1220 but has invisable lines. What am I doing wrong?
    • 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
×
×
  • Create New...