Jump to content
Sign in to follow this  
hlcit

New user: Help with UDFs

Recommended Posts

hlcit

Hi,

I'm new to AutoIt and was wondering if I could have some advice. I have written one program that calls another, and I have made a user defined function with modules that I have added to the Include file. At the top of the second file is #include and at the top of my modules file is #include-once.

If I run the calling program from SciTE then I dont get any errors. If I run the calling program from a windows explorer window, it throws up and AutoIt error "Error opening file". But it does pick up the other UDFs that came with AutoIT. What else do I need to set?

Thank you for your help in advance!

Edited by hlcit

Share this post


Link to post
Share on other sites
Scriptonize

Where is the include file you wrote yourself stored?

Is it stored in the same folder as the main script file?


If you learn from It, it's not a mistake

Share this post


Link to post
Share on other sites
hlcit

Where is the include file you wrote yourself stored?

Is it stored in the same folder as the main script file?

Thank you for your help.

They are both in different folders. The include file I wrote is in the AutoIt include file with the rest of the UDFs that AutoIt comes with. Id prefer it this way if possible. I've found that it will pick up the include file if I give it the full path but I'd rather not have to do that.

Share this post


Link to post
Share on other sites
Scriptonize

Thank you for your help.

They are both in different folders. The include file I wrote is in the AutoIt include file with the rest of the UDFs that AutoIt comes with. Id prefer it this way if possible. I've found that it will pick up the include file if I give it the full path but I'd rather not have to do that.

I store my include files always together with my script file in the same folder.

This way I don't need to add the path to my include code.

Edited by Scriptonize

If you learn from It, it's not a mistake

Share this post


Link to post
Share on other sites
hlcit

I store my include files always together with my script file in the same folder.

This way I don't need to add the path to my include code.

Once again thank you. My problem is that what I'm doing is for work so certain test script files have to be in certain folders and these all use the standard modules that I have been put together. To keep the file in the AutoIt\Include folder is it an environment variable or something that I need to set? I don't understand why it will pick up the AutoIt UDFs but not mine.

Share this post


Link to post
Share on other sites
Scriptonize

Can you show the code you use to include the file?


If you learn from It, it's not a mistake

Share this post


Link to post
Share on other sites
hlcit

At the top of the file to be included I have:

#include-once

At the top of the files to use the modules I have

#include <ATELog.au3>

Share this post


Link to post
Share on other sites
Scriptonize

At the top of the file to be included I have:

#include-once

At the top of the files to use the modules I have

#include <ATELog.au3>

And the ATELog.au3 file resides in the common include folder (something like C:\Program Files\AutoIt3\Include)?

[[EDIT]]

Just to be shure.

In the main script file you should use the line:

#include <ATELog.au3>

In the included file (ATELog.au3) you may add the line:

#include-once

Edited by Scriptonize

If you learn from It, it's not a mistake

Share this post


Link to post
Share on other sites
hlcit

Yes, it is with all the other UDFs in Program Files\AutoIt3\Include

It seems odd to me that it will pick up every other file in there but mine!

Share this post


Link to post
Share on other sites
Scriptonize

Yes, it is with all the other UDFs in Program Files\AutoIt3\Include

It seems odd to me that it will pick up every other file in there but mine!

Sorry, I was editing my lats post while you replied.

Did you see my [[EDIT]]?


If you learn from It, it's not a mistake

Share this post


Link to post
Share on other sites
hlcit

Sorry, I was editing my lats post while you replied.

Did you see my [[EDIT]]?

Sorry for that!

Those are the lines that I already have in place in the files

Is there a file anywhere that I have to put the name of my file in or something to allow AutoIt to find it?

Share this post


Link to post
Share on other sites
Scriptonize

If you have all in place as it should, it should be working.

It's not such difficult thing to do.

The help files says:

--------------------------------------

In an AutoIt script, other scripts can be included using the #include" command.

For the include library syntax (#include <file>) to work AutoIt must have been installed using the supplied installer otherwise the installation directory will not be known and the current script directory (@ScriptDir\Include) will be used instead.

If you include the same file containing a user-function more than once you will get a "Duplicate function" error. When writing an include file that may be used in this way, make sure that the top line contains #include-once to prevent that file from being included more than once.

There is a special registry value that can be created at "HKEY_CURRENT_USER\Software\AutoIt v3\AutoIt" called "Include". It should be a REG_SZ (string) value. The contents of this value are a semi-colon delimited list of directories that should be searched for files when resolving #include's in addition to the standard locations.

-----------------------------------------

If you use "Include" this way (and it sounds like you do it this way), all should be working.


If you learn from It, it's not a mistake

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  

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.