Jump to content
Sign in to follow this  
Skysnake

[solved] Au3Stripper unsolvable Func - $sCallBack?

Recommended Posts

>"C:\Program Files (x86)\AutoIt3\SciTE\..\AutoIt3.exe" "C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3" /ShowGui /prod /in "C:\AutoIt\pegasus\wings.au3"
+>08:02:43 Starting AutoIt3Wrapper v.19.102.1901.0 SciTE v.4.1.2.0   Keyboard:00000409  OS:WIN_10/  CPU:X64 OS:X64  Environment(Language:0409)  CodePage:0  utf8.auto.check:4
+>         SciTEDir => C:\Program Files (x86)\AutoIt3\SciTE   UserDir => C:\Users\x\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper   SCITE_USERHOME => C:\Users\x\AppData\Local\AutoIt v3\SciTE 
-> No changes made..
>Running Au3Stripper (19.102.1901.0)  from:C:\Program Files (x86)\AutoIt3\SciTE\Au3Stripper cmdline:
-### StripOnly/StripFunc Error: Found ObjEvent() statement using unsolvable Func, which will/could lead to removal of Funcs that are used by this Function.
>### current Func: _1p2
c:\program files (x86)\autoit3\include\ie.au3(2572,1): Warning for line:$__g_oIEErrorHandler = ObjEvent("AutoIt.Error", $__g_sIEUserErrorHandler) 

-### StripOnly/StripFunc Error: Found Call() statement using unsolvable Func, which will/could lead to removal of Funcs that are used by this Function.
>### current Func: _1te
c:\program files (x86)\autoit3\include\sqlite.au3(609,1): Warning for line:$iCbRval = Call($sCallBack, $aDataRow) 

-### StripOnly/StripFunc Error: Found Call() statement using unsolvable Func, which will/could lead to removal of Funcs that are used by this Function.
>### current Func: _1te
c:\program files (x86)\autoit3\include\sqlite.au3(625,1): Warning for line:$iCbRval = Call($sCallBack, $aDataRow)

My issue is specifically with the Call($sCallBack, xyz) part.  I declared a Global with that name and thought I had it sorted.  Previous releases appear content with that solution... Current I get this.

Question are these:

  1. Should there be a default $sCallBack define in the provided include?
  2. What exactly should the "user defined" Callback function look like? And where is it defined?

Sorry I am lost.

 

 

Edited by Skysnake

Skysnake

Why is the snake in the sky?

Share this post


Link to post
Share on other sites

Au3Stripper doesn't know values of variables so is never going to be able to determine which Func you will call with the Call($sCallBack, xyz)  statement, hence the warning/error returned as this could lead to au3strpper stripping Func's from the sourcecode which are used later.

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

But you can tell Au3Stripper which functions are called by Call($sCallBack, xyz) and hence should not be stripped.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2020-03-26 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2020-03-21 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEXGUI (NEW 2020-03-27 - Version 1.0.0.0) - Download
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 (2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki, WebDriver - Wiki

 

Share this post


Link to post
Share on other sites

I understand the words of what both of you have written, but not the implementation :(

 

 

Edited by Skysnake

Skysnake

Why is the snake in the sky?

Share this post


Link to post
Share on other sites

This help page should deliver all needed information: https://www.autoitscript.com/autoit3/scite/docs/SciTE4AutoIt3.html
Have a look at #Au3Stripper_Ignore_Funcs= 


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2020-03-26 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2020-03-21 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEXGUI (NEW 2020-03-27 - Version 1.0.0.0) - Download
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 (2019-12-03 - Version 1.5.1.0) - Download - General Help & Support - Wiki

Tutorials:
ADO - Wiki, WebDriver - Wiki

 

Share this post


Link to post
Share on other sites

Au3stripper will still give you the Errors/Warnings and leaves it to you to be responsible for continuing.
Also remember that you need to tell AutoIt3Wrapper to use the stripped script as by default it will revert to the original script when an error is detected!

#AutoIt3Wrapper_Au3stripper_OnError=             ;(C/S/ForceUse) Continue/Stop on Errors/Continue using stripped source in Exe (Default=C)

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

Thank you both.

I added this to the header

#Au3Stripper_Ignore_Funcs=_1p2
#Au3Stripper_Ignore_Funcs=_SQLite*
#AutoIt3Wrapper_Au3stripper_OnError=ForceUse             ;(C/S/ForceUse) Continue/Stop on Errors/Continue using stripped source in Exe (Default=C)
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

Then I still got complaints about the unsolvable function:

>Running Au3Stripper (19.102.1901.0)  from:C:\Program Files (x86)\AutoIt3\SciTE\Au3Stripper cmdline:
-### StripOnly/StripFunc Error: Found ObjEvent() statement using unsolvable Func, which will/could lead to removal of Funcs that are used by this Function.
>### current Func: _1p2
c:\program files (x86)\autoit3\include\ie.au3(2572,1): Warning for line:$__g_oIEErrorHandler = ObjEvent("AutoIt.Error", $__g_sIEUserErrorHandler) 

-### StripOnly/StripFunc Error: Found Call() statement using unsolvable Func, which will/could lead to removal of Funcs that are used by this Function.
>### current Func: _SQLite_GetTable2d
c:\program files (x86)\autoit3\include\sqlite.au3(609,1): Warning for line:$iCbRval = Call($sCallBack, $aDataRow) 

-### StripOnly/StripFunc Error: Found Call() statement using unsolvable Func, which will/could lead to removal of Funcs that are used by this Function.
>### current Func: _SQLite_GetTable2d
c:\program files (x86)\autoit3\include\sqlite.au3(625,1): Warning for line:$iCbRval = Call($sCallBack, $aDataRow)

And then this :)

!>07:50:24 --------------------------------------------------------------------------------------------
!>07:50:24 Au3Stripper ended with errors but ForceUse defined, so using it anyway (your own risk!)rc:3
!>07:50:24 --------------------------------------------------------------------------------------------

 

I think the  #Au3Stripper_Ignore_Funcs=  is perhaps not specified correctly.  Except for the entry in the Help file, I could not find an example of use?

 

There is another questions here:

How would one code the $sCallback line to allow Stripper to detect it? Or will it always complain?

Is this the correct syntax? Would this be sufficient? If this works, I could simply wrap a system error function :)

Global $sCallback Func MyCallBackFunc()
    ;do something
EndFunc   ;==>Global $sCallback

Thank you. Much appreciated.


Skysnake

Why is the snake in the sky?

Share this post


Link to post
Share on other sites
3 hours ago, Skysnake said:

Then I still got complaints about the unsolvable function:

Sigh, I thought I was pretty clear about that in my last post!

14 hours ago, Jos said:

Au3stripper will still give you the Errors/Warnings and leaves it to you to be responsible for continuing.

.. but the important thing is they remain there which is something you need to check!

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

Skysnake, You use function variables this way:

Global $MyFuncVar = MyFunc

$MyFuncVar( 123 )

Func MyFunc( $i )
  ConsoleWrite( $i & @CRLF )
EndFunc

This applies to both common functions and callback functions. No need to use Call().

Share this post


Link to post
Share on other sites

Skysnake, I've read the whole thread a little more carefully. Note that callback functions are used in relation to Windows API functions and in relation to the AutoIt function DllCallbackRegister. It's not something you use in normal AutoIt functions.

Look at the example for DllCallbackRegister in the help file. The example implements the Windows API function EnumWindows so that it can be used in AutoIt.

The Microsoft documentation describes that EnumWindows uses a callback function called EnumWindowsProc. To get EnumWindows to work in AutoIt, EnumWindowsProc must also be implemented in AutoIt.

EnumWindows is implemented using the DllCall function. EnumWindowsProc is implemented using the DllCallbackRegister function. The parameters for both functions are documented by Microsoft.

The callback function is called directly from the internal EnumWindows code (C/C++ code). It's not called in the AutoIt code.


The only way you can use function variables in relation to callback functions is in this way (the first lines in the example), since you are not calling the function yourself in the AutoIt code:

Global $MyFuncVar = _EnumWindowsProc

; Create callback function.
Global $hHandle = DllCallbackRegister(FuncName($MyFuncVar), "int", "hwnd;lparam")

 

Edited by LarsJ

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 Jos
      1/02/2018: Uploaded a new SciTe4AutoIt3.exe v19.102.1901.0 installer.
      This version contains the bugfix release for SciTE 4.1.2.
      There has been a major update for Tidy allowing now inline comments without them being shifted to the left by default.
      See this thread for the total story about the new behavior and the added options
      ==> SciTE4AutoIt3 v19.102.1901.0
      Enjoy,
      Jos

      Addition/Changes/Fixes in the current installer:

      -------------------------------------------------------------------------------------------------- 2-1-2019 *** Merged the SciTE v 4.1.2 by Neil Hodgson with our own version of SciTE. (Jos)     - Fixed regex issue for Alt+F in AutoItTools.lua     - Fixed another regex issue for several functions in AutoItTools.lua     - Fixed Header parameters now showing None when none are     - Fixed jump to function to also jump to the right Column again.     - Restored AutoItTools:Copy_BookMarks() functionality *** Updated AutoIt3Wrapper v19.102.1901.0 (Jos)     - 18.703.1808.1 renamed "#AutoIt3Wrapper_Au3Stripper_Stop_OnError" to "#AutoIt3Wrapper_Au3Stripper_OnError" with now as options S,C,F,Stop,Continue,ForceUse     - 18.708.1148.1 Added #include <WinAPIFiles.au3> back in the included file list to ensure backward compatibility.     - 18.708.1148.2 Added "Tidy_Stop_OnError" support to the AutoIt3Wrapper.INI file.                     Changed HiDPI settings for Win 10 compatibility.     - 18.708.1148.4 Added logic to be able to display Console Output of script that have #RequireAdmin while SciTE runs at normal level.     - 18.708.1148.5 Added support to allow to Stop Execution or Restart for scripts with #RequireAdmin while SciTE runs at normal level.                     It won't hang anymore when you reply No on the UAC and detect the elevated process didn;t start.     - 18.708.1148.6 Reverted HiDPI changes made in 18.708.1148.2 as problems are reported. needs investigation.     - 18.708.1148.7 Changed check for RequireAdmin AutoIt3Wrapper startup.     - 18.708.1148.8 Added #include <APIResConstants.au3> for backwards compatibility with AutoIt3 v3.3.14.x. *** Updated Au3Stripper v19.102.1901.0 (Jos)     - 18.708.1148.1 Fixed issue finding variable names on multiline statements     - 18.708.1148.2 Added check for ending \ in the AutoIt3Dir, and remove it when there, to avoid duplication of includes.     - recompiled with PellesC 6 to make it compatible with WinXP again. *** Updated SciTEConfig v19.102.1901.0 (Jos)     - 18.708.1148.1 Update to allow comments in *.SciTEConfig file lines. (JPM)                     This update includes the updated shemes to allow changing between them. *** Updated Tidy v19.102.1901.0 (Jos)     - 18.708.1148.1: Fix bug handling Directivelines ending with continuation character     - 18.708.1148.2: Fixed indentation when a "None breaking space"(C2A0) character is used in a UTF file.     - 18.708.1148.3: Fix bug when a continuation line starts with +x, where is would add a space between +- and number.     - 18.708.9999.x: Rewrite of some internal code to allow inlinecomments to remain at their current position.                       Details can be found in this post: https://www.autoitscript.com/forum/topic/196221-tidy-major-update-27-10-requesting-help-with-testing/     - 18.708.9999.22: Released to Beta.     - 18.708.9999.23: Added option to totally skip commentblocks so now the options are:                         #Tidy_Parameters=/tcb=0         =>only indent the whole commentblock  (default)                                          /tcb or /tcb=1 =>Tidy inside commentblock                                          /tcb=-1        =>leave whole commentbock alone                        Tidy.INI:#--> Tidy commentblock 0=only indent the whole commentblock  (default=0)                                 #                      1=Tidy inside commentblock                                 #                     -1=leave whole commentbock alone                                 Tidy_commentblock=0     - 18.708.9999.24: Added check for ending \ in the AutoIt3Dir and remove it when there.     - recompiled with PellesC 6 to make it compatible with WinXP again. --------------------------------------------------------------------------------------------------
      ==> ScitillaHistory page containing all SciTE-Scintilla updates.
      ==> Visit the SciTE4AutoIt3 Download page for the latest versions
      ==> Check the online documentation for an overview of all extra's you get with this installer.
    • By BigDaddyO
      I've recently been getting hammered by Symantec SEP deleting all of my compiled scripts so I'm trying to figure out how I could run my scripts uncompiled.
      Problem is, these scripts are typically launched from inside Citrix sessions that I don't have control of so I can't install AutoIT in there to get all the #Include files that my scripts are using.
      I tried to use AU3Stripper and while, yes that did create a single file and I could run it. it put it in a state that I couldn't easily maintain going forward.
       
      Is there any existing way to pull all the functions and drop them at the end of the main script?  Not sure about the Globals and Constants though, I guess they would have to go to the top which shoves everything else down.  I also need to maintain the current script spacing and comments as I often have to update older scripts and need the comments to help with that.
    • By Jos
      7/8/2018: Uploaded a new SciTe4AutoIt3.exe v18.708.1148.0 installer.
      It has been over a year since the last update of the full SciTE4AutoIt3 installer whch mainly had to do with the fact that Neil was moving toward v4 of SciTE and I wanted to wait for a stable version.
      Any help with testing this version before general release is appreciated.
      Also any feedback is welcome in caseI missed something or suggestions for improvement before releasing.
      ==> SciTE4AutoIt3 v18.708.1148.0
      Enjoy,
      Jos

      Addition/Changes/Fixes in the current installer:
      -------------------------------------------------------------------------------------------------- 8-7-2018 *** Merged the SciTE v 4.1.0 by Neil Hodgson with our own version of SciTE. (Jos)     This is a major change from the previous version so ensure you update all files including LUA or else you will get errors!     - SciLexer au3: Fixed issues with nested CommentBlocks not always showing the correct color.     - SciLexer au3: Change any line starting with # and no recognised keyword to be shown with the Pre-Processor in stead of default.     - Changed Shortcut for AU3INFO to Ctrl+Shift+F6.     - Moved the session restore logic for (save.session.advanced=1)into SciTE in stead of LoadSession.lua as that was clearing the recent files list of the last session       when opening a file by double cliking it. This is fixed with this change.       Default remains 0 so when a file is double clicked the last session isn't restored unless you add this to SciTEuser.properties:       "save.session.advanced=1"     - updated Tools.lua replacing [s%] with [ /t] to avoid empty lines being stripped by those functions. (Thanks Enyby) *** Updated AutoIt3Wrapper v18.708.1148.0 (Jos)     - 17.224.935.1 Added /autoit3dir to au3stripper commandline, when provided to AutoIt3Wrapper., to ensure the included files are for the correct AutoIt3 directory     - 17.224.935.2 Added directives:          #AutoIt3Wrapper_Res_CompanyName=          ;Company field          #AutoIt3Wrapper_Res_LegalTrademarks=      ;Trademark field     - 17.224.935.5 Fixed Versioning when files contain backets ->  ()     - 17.224.935.6 Added support for :          #AutoIt3Wrapper_Au3stripper_Stop_OnError=        ;(Y/N) Continue/Stop on Warnings.(Default=N)     - 17.224.935.7 added INI support for:           [Other]            Au3Stripper_Stop_OnError=n     - 17.224.935.10 Minor changes in console messages     - 17.224.935.11 Modifications from JPM:         - add #AutpIt3Wrapper_Res_Cursor_Add         - "clean" a little bit AutoIt3Wrapper.au3 *** Updated Au3Stripper v18.708.1148.0 (Jos)     - 17.224.935.1 Fixed crash when an include file contains longer record than 4096 characters.     - 17.224.935.2 Changed /rsln to replace @ScriptLineNumber in the Master script with "XXX/YYY". XXX is the master script linenumber, YYY is the Merged script linenumber.     - 17.224.935.3 Fixed issue detecting #cs #ce when a space was missing after the directive.     - 17.224.935.4 Changed Close/Open logic for Tracelog to (hopefully) avoid the hardcrash.     - 17.224.935.5 improved speed avoiding rereading include files to determine the max rec len.     - 17.224.935.6 improved speed by re-coding the check for long records.     - 17.224.935.7 Made sure the returncode is the highest from all iterations in stead of the last iteration.     - 17.224.935.8 fix for reported bug: https://www.autoitscript.com/trac/autoit/ticket/3623#comment:4     - 17.224.935.9 added support for #autoit3wrapper_autoit3dir     - 17.224.935.10 Fixed support for #autoit3wrapper_autoit3dir when followed by linecomment                     Stop processing when include file isn't found.     - 18.624.1847.1 strip the leading and trailing double quotes from the autoit3dir directive to avoid an error when they are specified.     - 18.624.1847.2 Fixed Hardcrash in the Include logic     - 18.624.1847.3 Fixed Hardcrash in Func stripping logic by enlarging the base table size     - 18.702.1556.1 Fixed regression bug with the Translate option.     - 18.703.1808.2 Fixed regression bug with the Stripping FUNC logic for the first found FUNC. *** Updated SciTEConfig v18.708.1148.0 (Jos)     - 17.224.935.1 No updates *** Updated Tidy v18.708.1148.0 (Jos)     - 17.224.935.1 Added option  to copy comments from #CS to #CE. Default is to copy the comments.                    Added Tidy Parameters:  /Skip_CE_Comment or /scec will skip this copy action                    Added INI option:                      * * *  Add comment to #CE/#CommentEnd and make it the same as the #CS/CommentStart Comments.                      ce_comment=1     - 17.224.935.2 Fix issue with Copy comments on comment start - end     - 17.224.935.4 Fix another issue with Copy comments on comment start - end -------------------------------------------------------------------------------------------------- ==> ScitillaHistory page containing all SciTE-Scintilla updates.
      ==> Visit the SciTE4AutoIt3 Download page for the latest versions
      ==> Check the online documentation for an overview of all extra's you get with this installer.
    • By kara2004
      Hi there,
      I have a problem using the latest two betas of au3stripper.exe.
      Compiling my script using V17.224.935.6 works fine, the next two releases (18.624.1847.0 and 18.624.1847.1) show an error:
      !==> *** ERROR: stopping process because include file not found :#include <INCLUDE_FILE.au3> !==> *** Checked these directories : !==> C:\Program Files (x86)\AutoIt3\include\INCLUDE_FILE.au3 !==> SCRIPT_DIR\INCLUDE_FILE.au3 !==> SCRIPT_DIR\INCLUDE_FILE.au3 !>18:42:00 --------------------------------------------------------------- !>18:42:00 Au3Stripper ended with errors, using original scriptfile.rc:999 !>18:42:00 --------------------------------------------------------------- Changing the include line according to the helpfile (using "..." for includes in script dir and <..> for includes in the au3-include-dir won't help!?
      Greetings
      kara66
       
    • By Simpel
      Hi,
      while debugging sometimes I need the au3 stripped script with /mo parameter, so that error lines in the error message match the script. Things I use often I put inside sendto folder (shell:sendto) so I can push my file to this with right click fast. A long time I had problems with some of my scripts stripping this way because the some paths to my script included spaces (you should not do that). But here’s my solution fixing that problem:
      Local $sPathToAU3Stripper = "" ; fill in the path here Local $sPath If $CmdLineRaw = "" Then ; you didn't do it with sendto $sPath = FileOpenDialog("Which file you want to AU3-strip?", "","AU3 (*.au3)", 3) If @error Then MsgBox(0, 'Error FileOpenDialog:', @error) Exit EndIf Else $sPath = $CMDLINE[1] EndIf Local $sPath_quoted = '"' & $sPath & '"' ShellExecuteWait($sPathToAU3Stripper, $sPath_quoted & ' /mo', "", "", @SW_HIDE) I hope someone will find it useful.
      Regards, Conrad
×
×
  • Create New...