genius257 Posted July 31 Posted July 31 (edited) I hope someone can give me help with understanding this. I am testing manipulating AutoIt arrays via COM objects. I can make AutoIt pass me the underlying variant ptr this way, and as i understand it, AutoIt uses varaints internally for values. When calling the method with a array the call takes longer. Since i can modify the variable directly, i expect it does not clone the value, yet arrays take longer, so it's doing something. Also. The size of the array does seem to affect time taken. Does anyone have any ideas what is causing this behavior? #include <WinAPICom.au3> Func F1($pObject, $pVariant) return 0 EndFunc $tObject = DllStructCreate("ptr VTableAddress;ptr VTableMethods[4];") DllStructSetData($tObject, "VTableAddress", DllStructGetPtr($tObject, "VTableMethods")) Local $hF1 = DllCallbackRegister(F1, "LONG", "PTR;PTR") Local $pF1 = DllCallbackGetPtr($hF1) DllStructSetData($tObject, "VTableMethods", $pF1, 1) Local $pObject = DllStructGetPtr($tObject) $oObject = ObjCreateInterface($pObject, _WinAPI_CreateGUID(), "f1 HRESULT(variant*);", False) ;------------------------------------------------------------------------------------------- $s = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris pharetra tristique felis at dapibus. Vivamus odio lorem, feugiat ut porttitor ac, vehicula sed diam. Donec facilisis quam vitae quam sollicitudin tempus. Quisque ligula sapien, convallis in enim quis, porttitor bibendum lacus. Aenean sollicitudin sit amet augue hendrerit tristique. Nam non est sollicitudin lorem semper tempus ac id tellus. Ut id urna sed justo maximus condimentum ut sed nibh. Integer sit amet consectetur leo. Ut consectetur, nisl eget placerat dignissim, quam dolor rutrum lectus, nec sollicitudin nunc ipsum quis turpis. Maecenas venenatis vel neque vitae aliquam. Etiam id elit quis arcu blandit luctus id ac mauris. Etiam cursus bibendum ultricies. Morbi vitae pellentesque eros, at ullamcorper neque. Duis luctus semper euismod. Etiam vel dui sit amet ante faucibus lacinia non et ante. Quisque id mauris ultrices, congue dui vitae, semper justo. Quisque a placerat metus, vitae ultrices massa. Nunc iaculis faucibus quam quis tincidunt. Integer suscipit ullamcorper felis, eu porttitor nibh sodales ut. Aenean quis fermentum nisl. Maecenas vestibulum hendrerit dolor ac ornare. Mauris vulputate nulla ut nunc ultricies faucibus. Vestibulum ligula enim, vestibulum vitae mauris in, vehicula aliquet nibh. Nunc viverra erat massa, nec scelerisque lacus posuere quis. Maecenas nec neque facilisis, malesuada urna a, iaculis sem. Donec volutpat eget enim nec tempus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Pellentesque vitae est elementum, feugiat ligula sit amet, porttitor turpis. Aliquam erat volutpat. Quisque id luctus leo. Vestibulum egestas, nibh id euismod semper, sem tellus dictum metus, nec ullamcorper tellus nisi a sapien. Nunc rutrum, mauris eu lacinia tincidunt, velit augue interdum massa, eu porta odio massa ac ipsum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Curabitur semper sed dolor ut vulputate. Cras cursus odio eu felis tristique, non fermentum tellus bibendum. Mauris laoreet mattis blandit. Morbi eget viverra diam. Nulla a venenatis enim, vitae ullamcorper nisi. Cras feugiat felis id orci sagittis rhoncus. Proin congue tempor urna id viverra. Aliquam scelerisque leo sit amet justo laoreet pulvinar. Integer risus enim, viverra at tortor nec, egestas rutrum massa. Cras id velit imperdiet, elementum ante sit amet, tincidunt nunc. In facilisis mi a suscipit mollis. Donec ornare ante quis sodales vestibulum. Phasellus eget tellus erat. Sed pellentesque eleifend mauris vel malesuada. Quisque orci felis, fringilla vel tellus et, vestibulum efficitur lacus. Nullam dictum ligula non faucibus fermentum. Pellentesque dignissim, velit in scelerisque luctus, lacus arcu fermentum nulla, vel sodales nibh tortor in elit. Curabitur ut orci varius, scelerisque lectus volutpat, posuere turpis. Integer efficitur arcu nec ornare lobortis. Fusce lobortis, odio ut sodales pulvinar, neque nisl eleifend tortor, in dignissim ipsum purus nec nunc. Vivamus auctor lectus volutpat nunc congue sollicitudin nec eu nisl. Cras elementum auctor ligula, et egestas augue pharetra eu. Nam fermentum condimentum finibus. Aliquam a suscipit sem. Cras pretium neque nec ullamcorper aliquet. Sed vitae condimentum est. Curabitur mattis posuere rhoncus. Sed accumsan, quam nec mollis faucibus, velit odio ornare velit, sit amet fermentum enim." $s = $s & $s & $s $aArray = StringSplit($s, "", 2) $iNumber = 0xabc ConsoleWrite("Array:"&@CRLF) $hTime = TimerInit() $oObject.f1($aArray) ConsoleWrite(" variant*: " & TimerDiff($hTime)&@CRLF) ConsoleWrite("Number:"&@CRLF) $hTime = TimerInit() $oObject.f1($iNumber) ConsoleWrite(" variant*: " & TimerDiff($hTime)&@CRLF) Edited July 31 by genius257 mLipok 1 To show your appreciation My highlighted topics: AutoIt Package Manager, AutoItObject Pure AutoIt, AutoIt extension for Visual Studio Code Github: AutoIt HTTP Server, AutoIt HTML Parser
jugador Posted August 1 Posted August 1 (edited) time taken to convert Array to Safearray UBound: 10308 Array_Split: 3.59900051094329 to_Safearray: 10.3791479145815 Now if you delete the code within __Array_to_SafeArray then the time taken just to pass the data through COM objects.... UBound: 10308 Array_Split: 3.74493431229134 to_Safearray: 9.39925668250824 <<============ So it's an AutoIt internal thing; you have to ask Jon. Example code: #include "SafeArray.au3" #include "ArrayPointer UDF.au3" __Example_0A() Func __Example_0A() $s = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris pharetra tristique felis at dapibus. Vivamus odio lorem, feugiat ut porttitor ac, vehicula sed diam. Donec facilisis quam vitae quam sollicitudin tempus. Quisque ligula sapien, convallis in enim quis, porttitor bibendum lacus. Aenean sollicitudin sit amet augue hendrerit tristique. Nam non est sollicitudin lorem semper tempus ac id tellus. Ut id urna sed justo maximus condimentum ut sed nibh. Integer sit amet consectetur leo. Ut consectetur, nisl eget placerat dignissim, quam dolor rutrum lectus, nec sollicitudin nunc ipsum quis turpis. Maecenas venenatis vel neque vitae aliquam. Etiam id elit quis arcu blandit luctus id ac mauris. Etiam cursus bibendum ultricies. Morbi vitae pellentesque eros, at ullamcorper neque. Duis luctus semper euismod. Etiam vel dui sit amet ante faucibus lacinia non et ante. Quisque id mauris ultrices, congue dui vitae, semper justo. Quisque a placerat metus, vitae ultrices massa. Nunc iaculis faucibus quam quis tincidunt. Integer suscipit ullamcorper felis, eu porttitor nibh sodales ut. Aenean quis fermentum nisl. Maecenas vestibulum hendrerit dolor ac ornare. Mauris vulputate nulla ut nunc ultricies faucibus. Vestibulum ligula enim, vestibulum vitae mauris in, vehicula aliquet nibh. Nunc viverra erat massa, nec scelerisque lacus posuere quis. Maecenas nec neque facilisis, malesuada urna a, iaculis sem. Donec volutpat eget enim nec tempus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Pellentesque vitae est elementum, feugiat ligula sit amet, porttitor turpis. Aliquam erat volutpat. Quisque id luctus leo. Vestibulum egestas, nibh id euismod semper, sem tellus dictum metus, nec ullamcorper tellus nisi a sapien. Nunc rutrum, mauris eu lacinia tincidunt, velit augue interdum massa, eu porta odio massa ac ipsum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Curabitur semper sed dolor ut vulputate. Cras cursus odio eu felis tristique, non fermentum tellus bibendum. Mauris laoreet mattis blandit. Morbi eget viverra diam. Nulla a venenatis enim, vitae ullamcorper nisi. Cras feugiat felis id orci sagittis rhoncus. Proin congue tempor urna id viverra. Aliquam scelerisque leo sit amet justo laoreet pulvinar. Integer risus enim, viverra at tortor nec, egestas rutrum massa. Cras id velit imperdiet, elementum ante sit amet, tincidunt nunc. In facilisis mi a suscipit mollis. Donec ornare ante quis sodales vestibulum. Phasellus eget tellus erat. Sed pellentesque eleifend mauris vel malesuada. Quisque orci felis, fringilla vel tellus et, vestibulum efficitur lacus. Nullam dictum ligula non faucibus fermentum. Pellentesque dignissim, velit in scelerisque luctus, lacus arcu fermentum nulla, vel sodales nibh tortor in elit. Curabitur ut orci varius, scelerisque lectus volutpat, posuere turpis. Integer efficitur arcu nec ornare lobortis. Fusce lobortis, odio ut sodales pulvinar, neque nisl eleifend tortor, in dignissim ipsum purus nec nunc. Vivamus auctor lectus volutpat nunc congue sollicitudin nec eu nisl. Cras elementum auctor ligula, et egestas augue pharetra eu. Nam fermentum condimentum finibus. Aliquam a suscipit sem. Cras pretium neque nec ullamcorper aliquet. Sed vitae condimentum est. Curabitur mattis posuere rhoncus. Sed accumsan, quam nec mollis faucibus, velit odio ornare velit, sit amet fermentum enim." $s = $s & $s & $s $hTime_A = TimerInit() $aArray = StringSplit($s, "", 2) ConsoleWrite(" UBound: " & UBound($aArray)&@CRLF) ConsoleWrite(" Array_Split: " & TimerDiff($hTime_A)&@CRLF) Local $t_SAobj Local $o_SAobj = __SafeArray_Dummy_Obj($t_SAobj) $hTime_B = TimerInit() Local $psa $o_SAobj.Array_to_SafeArray($aArray, $psa) SafeArrayUnaccessData( $psa ) ConsoleWrite(" to_Safearray: " & TimerDiff($hTime_B)&@CRLF) SafeArrayDestroy($psa) $o_SAobj = 0 __Delete_SafeArray_ObjectFromTag( $t_SAobj ) EndFunc for ArrayPointer UDF => https://www.autoitscript.com/forum/topic/213008-array-pointer/ Edited August 1 by jugador mLipok and genius257 2
Developers Jos Posted August 19 Developers Posted August 19 @jugador, guess it is you that made the bug report #4045 ... right? What's up with that last comment in that report, or did we miss any promised SLA in our mutual signed contract? Festerini and genius257 2 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.
Festerini Posted August 19 Posted August 19 On 8/1/2025 at 3:19 AM, genius257 said: I hope someone can give me help with understanding this. I am testing manipulating AutoIt arrays via COM objects. I can make AutoIt pass me the underlying variant ptr this way, and as i understand it, AutoIt uses varaints internally for values. When calling the method with a array the call takes longer. Since i can modify the variable directly, i expect it does not clone the value, yet arrays take longer, so it's doing something. Also. The size of the array does seem to affect time taken. Does anyone have any ideas what is causing this behavior? #include <WinAPICom.au3> Func F1($pObject, $pVariant) return 0 EndFunc $tObject = DllStructCreate("ptr VTableAddress;ptr VTableMethods[4];") DllStructSetData($tObject, "VTableAddress", DllStructGetPtr($tObject, "VTableMethods")) Local $hF1 = DllCallbackRegister(F1, "LONG", "PTR;PTR") Local $pF1 = DllCallbackGetPtr($hF1) DllStructSetData($tObject, "VTableMethods", $pF1, 1) Local $pObject = DllStructGetPtr($tObject) $oObject = ObjCreateInterface($pObject, _WinAPI_CreateGUID(), "f1 HRESULT(variant*);", False) ;------------------------------------------------------------------------------------------- $s = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris pharetra tristique felis at dapibus. Vivamus odio lorem, feugiat ut porttitor ac, vehicula sed diam. Donec facilisis quam vitae quam sollicitudin tempus. Quisque ligula sapien, convallis in enim quis, porttitor bibendum lacus. Aenean sollicitudin sit amet augue hendrerit tristique. Nam non est sollicitudin lorem semper tempus ac id tellus. Ut id urna sed justo maximus condimentum ut sed nibh. Integer sit amet consectetur leo. Ut consectetur, nisl eget placerat dignissim, quam dolor rutrum lectus, nec sollicitudin nunc ipsum quis turpis. Maecenas venenatis vel neque vitae aliquam. Etiam id elit quis arcu blandit luctus id ac mauris. Etiam cursus bibendum ultricies. Morbi vitae pellentesque eros, at ullamcorper neque. Duis luctus semper euismod. Etiam vel dui sit amet ante faucibus lacinia non et ante. Quisque id mauris ultrices, congue dui vitae, semper justo. Quisque a placerat metus, vitae ultrices massa. Nunc iaculis faucibus quam quis tincidunt. Integer suscipit ullamcorper felis, eu porttitor nibh sodales ut. Aenean quis fermentum nisl. Maecenas vestibulum hendrerit dolor ac ornare. Mauris vulputate nulla ut nunc ultricies faucibus. Vestibulum ligula enim, vestibulum vitae mauris in, vehicula aliquet nibh. Nunc viverra erat massa, nec scelerisque lacus posuere quis. Maecenas nec neque facilisis, malesuada urna a, iaculis sem. Donec volutpat eget enim nec tempus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Pellentesque vitae est elementum, feugiat ligula sit amet, porttitor turpis. Aliquam erat volutpat. Quisque id luctus leo. Vestibulum egestas, nibh id euismod semper, sem tellus dictum metus, nec ullamcorper tellus nisi a sapien. Nunc rutrum, mauris eu lacinia tincidunt, velit augue interdum massa, eu porta odio massa ac ipsum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Curabitur semper sed dolor ut vulputate. Cras cursus odio eu felis tristique, non fermentum tellus bibendum. Mauris laoreet mattis blandit. Morbi eget viverra diam. Nulla a venenatis enim, vitae ullamcorper nisi. Cras feugiat felis id orci sagittis rhoncus. Proin congue tempor urna id viverra. Aliquam scelerisque leo sit amet justo laoreet pulvinar. Integer risus enim, viverra at tortor nec, egestas rutrum massa. Cras id velit imperdiet, elementum ante sit amet, tincidunt nunc. In facilisis mi a suscipit mollis. Donec ornare ante quis sodales vestibulum. Phasellus eget tellus erat. Sed pellentesque eleifend mauris vel malesuada. Quisque orci felis, fringilla vel tellus et, vestibulum efficitur lacus. Nullam dictum ligula non faucibus fermentum. Pellentesque dignissim, velit in scelerisque luctus, lacus arcu fermentum nulla, vel sodales nibh tortor in elit. Curabitur ut orci varius, scelerisque lectus volutpat, posuere turpis. Integer efficitur arcu nec ornare lobortis. Fusce lobortis, odio ut sodales pulvinar, neque nisl eleifend tortor, in dignissim ipsum purus nec nunc. Vivamus auctor lectus volutpat nunc congue sollicitudin nec eu nisl. Cras elementum auctor ligula, et egestas augue pharetra eu. Nam fermentum condimentum finibus. Aliquam a suscipit sem. Cras pretium neque nec ullamcorper aliquet. Sed vitae condimentum est. Curabitur mattis posuere rhoncus. Sed accumsan, quam nec mollis faucibus, velit odio ornare velit, sit amet fermentum enim." $s = $s & $s & $s $aArray = StringSplit($s, "", 2) $iNumber = 0xabc ConsoleWrite("Array:"&@CRLF) $hTime = TimerInit() $oObject.f1($aArray) ConsoleWrite(" variant*: " & TimerDiff($hTime)&@CRLF) ConsoleWrite("Number:"&@CRLF) $hTime = TimerInit() $oObject.f1($iNumber) ConsoleWrite(" variant*: " & TimerDiff($hTime)&@CRLF) I'm going to state the obvious. It pays to remember that every process in software takes time. There is no escaping it. The more work and CPU cycles something takes, the longer it is. Even declaring a variable, adding up some numbers, or calling an empty function takes time A lot of the communication apps I write are processing a lot of data, and are waiting for inputs to end, so execution time is important. I build timers into deployed software betas that write to the Windows Event Logs, which get returned to a monitoring console. Sometimes it takes a lot of coding development to cut down on processing time. I don't have a good understanding of Com objects, but some of them do not always work as efficiently and as accurately as we would expect. Everything has to be tested to give certainty. genius257 1
genius257 Posted August 20 Author Posted August 20 @Festerini, You are right i guess? Some time after posting i realized i had somehwere along the way misunderstood how AutoIt stores its values internally. I somehow convinced myself AutoIt kept COM variants internally for it's values. This is almost certainly not the case, so the time difference comes down to the way AutoIt converts values to COM variants before passing them to the COM method. It may not be optimized, or maybe that is just how slow things are, when converting to and from COM variants, to AutoIt's own variable "structure". I've not posted anything here, since I wasn't sure anyone here would benefit, and I also need time to find my calm again. I got pretty upset at myself, for wasting ALOT of time on this, and it being useless, performance wise, with nothing to do about it 🤷♂️ I have lots of other AutoIt projects (44 planned) I will focus on, when I'm ready. To show your appreciation My highlighted topics: AutoIt Package Manager, AutoItObject Pure AutoIt, AutoIt extension for Visual Studio Code Github: AutoIt HTTP Server, AutoIt HTML Parser
Festerini Posted August 20 Posted August 20 7 hours ago, genius257 said: @Festerini, You are right i guess? Some time after posting i realized i had somehwere along the way misunderstood how AutoIt stores its values internally. I somehow convinced myself AutoIt kept COM variants internally for it's values. This is almost certainly not the case, so the time difference comes down to the way AutoIt converts values to COM variants before passing them to the COM method. It may not be optimized, or maybe that is just how slow things are, when converting to and from COM variants, to AutoIt's own variable "structure". I've not posted anything here, since I wasn't sure anyone here would benefit, and I also need time to find my calm again. I got pretty upset at myself, for wasting ALOT of time on this, and it being useless, performance wise, with nothing to do about it 🤷♂️ I have lots of other AutoIt projects (44 planned) I will focus on, when I'm ready. I've wasted time as well. I've on creating microsecond sleep periods. I've copied and implemented a few things I learnt on here, that use Microsoft com objects, but the COM object does not reliably do what it says it does. Only by testing and measuring did I gain certainty. Same with random number functions for any language. Computers don't do random. They are anything but random. So I have had to build my own. Did it 30+ years ago in C. Did it recently with Autoit. argumentum 1
jugador Posted August 21 Posted August 21 @Jos What's wrong with that last comment in that report? Did I signed any mutual contract where asking is prohibited. A few words on the reported bug wouldn't hurt that much.
mLipok Posted August 21 Posted August 21 57 minutes ago, jugador said: What's wrong with that last comment in that report? The only thing is that you are creating time pressure on people who devote their time here on a NON PROFIT basis. 57 minutes ago, jugador said: Did I signed any mutual contract where asking is prohibited. Lets revert your question: Have you signed any agreement that obligates anyone to respond to your question within the required timeframe ? If not, I suggest you be more patient, understanding, and formulate your thoughts better, meaning to consider not only your own needs but also respect the time of others. And this is not just about communication in relation to AutoIt forum members, but also in your life in general. p.s. Please don't take my answer as offensive, but rather as advice from a kind person. Festerini and WildByDesign 2 Signature beginning:* Please remember: "AutoIt"..... * Wondering who uses AutoIt and what it can be used for ? * Forum Rules ** ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Code * for other useful stuff click the following button: Spoiler Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST API * ErrorLog.au3 UDF - A logging Library * Include Dependency Tree (Tool for analyzing script relations) * Show_Macro_Values.au3 * My contribution to others projects or UDF based on others projects: * _sql.au3 UDF * POP3.au3 UDF * RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF * SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane * Useful links: * Forum Rules * Forum etiquette * Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * Wiki: * Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * OpenOffice/LibreOffice/XLS Related: WriterDemo.au3 * XLS/MDB from scratch with ADOX IE Related: * How to use IE.au3 UDF with AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskScheduler * IE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) * PDF Related: * How to get reference to PDF object embeded in IE * IE on Windows 11 * I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions * EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *I also encourage you to check awesome @trancexx code: * Create COM objects from modules without any demand on user to register anything. * Another COM object registering stuff * OnHungApp handler * Avoid "AutoIt Error" message box in unknown errors * HTML editor * winhttp.au3 related : * https://www.autoitscript.com/forum/topic/206771-winhttpau3-download-problem-youre-speaking-plain-http-to-an-ssl-enabled-server-port/ "Homo sum; humani nil a me alienum puto" - Publius Terentius Afer"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming" , be and \\//_. Anticipating Errors : "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty." Signature last update: 2023-04-24
Developers Jos Posted August 21 Developers Posted August 21 (edited) 1 hour ago, jugador said: @Jos What's wrong with that last comment in that report? Did I signed any mutual contract where asking is prohibited. A few words on the reported bug wouldn't hurt that much. The tone of your report and this post is wrong and indicates you have no clue who does what around here, which is what I would expect of somebody being around this long. You might be lucky if anybody will look at it, as there is no developer around for that topic. To be ultimately clear: There currently is no development team as such. JPM Picks up the odd bug reports, but that is it. Jon isn't around much and that is it on the AutoIt3 dev font. Edited August 21 by Jos Festerini 1 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.
jugador Posted August 21 Posted August 21 3 hours ago, Jos said: The tone of your report and this post is wrong I simply answered the way you asked me. If I had known there was no developer available for that topic, I wouldn't have made that comment. This will be my last post on the topic.
jugador Posted August 21 Posted August 21 4 hours ago, mLipok said: but also in your life in general. what this? I hope you know your comment was a bit childish.
mLipok Posted Friday at 06:58 AM Posted Friday at 06:58 AM 12 hours ago, jugador said: what this? I hope you know your comment was a bit childish. I'm 47 years old. Have my own business. I employ 4 people. Working with "bussiness psychologist" mostly on communication and management in bussines in relation to HR. So. No I do not think so. I think that, You simply haven't thought enough about the meaning of my statement. I know it's sometimes difficult, mainly because of my poor English. BTW. I see JOS and I are still trying to be polite to you. Please respect this. Festerini and argumentum 2 Signature beginning:* Please remember: "AutoIt"..... * Wondering who uses AutoIt and what it can be used for ? * Forum Rules ** ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Code * for other useful stuff click the following button: Spoiler Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST API * ErrorLog.au3 UDF - A logging Library * Include Dependency Tree (Tool for analyzing script relations) * Show_Macro_Values.au3 * My contribution to others projects or UDF based on others projects: * _sql.au3 UDF * POP3.au3 UDF * RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF * SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane * Useful links: * Forum Rules * Forum etiquette * Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * Wiki: * Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * OpenOffice/LibreOffice/XLS Related: WriterDemo.au3 * XLS/MDB from scratch with ADOX IE Related: * How to use IE.au3 UDF with AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskScheduler * IE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) * PDF Related: * How to get reference to PDF object embeded in IE * IE on Windows 11 * I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions * EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *I also encourage you to check awesome @trancexx code: * Create COM objects from modules without any demand on user to register anything. * Another COM object registering stuff * OnHungApp handler * Avoid "AutoIt Error" message box in unknown errors * HTML editor * winhttp.au3 related : * https://www.autoitscript.com/forum/topic/206771-winhttpau3-download-problem-youre-speaking-plain-http-to-an-ssl-enabled-server-port/ "Homo sum; humani nil a me alienum puto" - Publius Terentius Afer"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming" , be and \\//_. Anticipating Errors : "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty." Signature last update: 2023-04-24
Festerini Posted Saturday at 01:02 AM Posted Saturday at 01:02 AM (edited) Jugador From a place of kindness and introspection, there is a general principle and lesson for anyone, that surpasses this topic, but still related to the genesis of this topic. That principle is "unit testing". If we unit test our code, we are never surprised or blindsided by results we didn't expect. And trust me, in my early days I was blind sided many many times. Unit testing also implies "never assuming" your own code is perfect. Build "test code" to test your "production code". But not only your own code, but supplied Autoit UDFs, members UDF, DLLs, COM objects, APIs etc. And not everything Microsoft publishes works as expected. We see this every single day in our MSP business. And if timing is important to a set of code, build in tests for timing. That way there are no surprises. You can build code with certainty. Code Complete 2, is one of the many great books on coding standards. I was recommended to read it by my seasoned genius programmer who has programmed in a dozen different languages with a reputation for error free code. I've read it half a dozen times, the last four taking extensive notes, and deriving and creating standards to use with AutoIT, and programming in general. Not the only book, but a good start. I've got 20+ years on mLipok, but he has insights I don't have, and is definitely not childish. Like him I have a business and staff, and yes, I program, purely out of necessity, in AutoIT. I/we program purely because what we need doesn't exist. My business is IT and Technology, not software. The heavy lifting is done in C# or Delphi, by my genius programmer(s). Full blown applications written by them, plus upgrades, are still running after 18 years of 24/7/365 continuous running without any bugs or errors. I know when to bow down to programming gods. Although I started programming in the late 80's, it was purely on a needs basis, not a full time occupation. I still regard myself as a novice, and am very grateful to the people on here like mLipok, Jos, Jon, Argumentum and many many others who provide valuable insights. 🙂 Edited Saturday at 01:04 AM by Festerini mLipok, argumentum and WildByDesign 3
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