AndyS19 Posted June 2, 2017 Posted June 2, 2017 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?
anthonyjr2 Posted June 2, 2017 Posted June 2, 2017 (edited) Local $filePath If FileExists("C:\Program Files (x86)") Then $filePath="C:\Program Files (x86)\" & $myLib & "\*.au3" Else $filePath="C:\Program Files\" & $myLib & "\*.au3" EndIf Edited June 2, 2017 by anthonyjr2 slight change UHJvZmVzc2lvbmFsIENvbXB1dGVyZXI=
Developers Jos Posted June 2, 2017 Developers Posted June 2, 2017 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.
AndyS19 Posted June 4, 2017 Author Posted June 4, 2017 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.
Developers Jos Posted June 4, 2017 Developers Posted June 4, 2017 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.
AndyS19 Posted June 4, 2017 Author Posted June 4, 2017 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.
Developers Jos Posted June 4, 2017 Developers Posted June 4, 2017 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.
AndyS19 Posted June 4, 2017 Author Posted June 4, 2017 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.
anthonyjr2 Posted June 5, 2017 Posted June 5, 2017 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=
AndyS19 Posted June 6, 2017 Author Posted June 6, 2017 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?
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now