jaberwacky Posted May 28, 2012 Posted May 28, 2012 I'm just wondering now with the introduction of I guess I may call them first-class functions would it make sense to make a function const? Or is that silly talk from someone who doesn't understand? Helpful Posts and Websites: AutoIt3 Variables and Function Parameters MHz | AutoIt Wiki | Using the GUIToolTip UDF BrewManNH | Can't find what you're looking for on the Forum?
trancexx Posted May 28, 2012 Posted May 28, 2012 (edited) If you decide to keep the ternaries, here's a small bug. dummy = random(0,1,1) ? b() : c() ; works random(0,1,1) ? b() : c() ; won't Autoit throws errors if you don't catch the return - this isn't the case with functions or the like. Why do you think it's a bug? I don't fully understand the second part of your last sentence. Our conditional operator doesn't result in autonomous expression. However, expression enclosed in parentheses always is. I'm not sure if that can be demonstrated with the version of AutoIt you have, but this would be it: (Random(0, 1, 1) ? b() : c()) Also thing to note is that ternary expression(s) evaluation is stateless. Edited May 28, 2012 by trancexx Reworded ♡♡♡ . eMyvnE
Shaggi Posted May 31, 2012 Posted May 31, 2012 Why do you think it's a bug? I don't fully understand the second part of your last sentence. Our conditional operator doesn't result in autonomous expression. However, expression enclosed in parentheses always is. I'm not sure if that can be demonstrated with the version of AutoIt you have, but this would be it: (Random(0, 1, 1) ? b() : c()) Not necessarily bug, maybe uncompleted feature? I dont know, it's been a while since I've seen a ternary operator that errors without a left-hand side assignment or packed into a paranthesis (which doesn't work alone, either): : ==> Illegal text at the end of statement (one statement per line).: random(0,1,1) ? b("") : c("") : ==> Unable to parse line.: (random(0,1,1) ? b("") : c("")) Version is beta 3.3.9.5 btw. Also thing to note is that ternary expression(s) evaluation is stateless. Say what? Ever wanted to call functions in another process? ProcessCall UDFConsole stuff: Console UDFC Preprocessor for AutoIt OMG
trancexx Posted May 31, 2012 Posted May 31, 2012 Say what? For questions like that use other parts of the forum. x=3 x ...whatever here ...does something like that work in languages you mention? ♡♡♡ . eMyvnE
jvanegmond Posted May 31, 2012 Posted May 31, 2012 Why do you think it's a bug? I don't fully understand the second part of your last sentence.Our conditional operator doesn't result in autonomous expression. However, expression enclosed in parentheses always is.I'm not sure if that can be demonstrated with the version of AutoIt you have, but this would be it:Common way to refer to an 'autonomous expression' would be 'statement'. For example:Ternary expression is not a statement.I don't know what someone would call an expression that also works as a statement, like a function call is both an expression and a statement depending on context. github.com/jvanegmond
James Posted May 31, 2012 Posted May 31, 2012 #383 ... Interesting. Hawt. Blog - Seriously epic web hosting - Twitter - GitHub - Cachet HQ
Shaggi Posted May 31, 2012 Posted May 31, 2012 For questions like that use other parts of the forum.Didn't intend to sound hostile or anything x=3 x ...whatever here ...does something like that work in languages you mention? Well, C/C++ for example? Although not really relevant in autoit, here's a case where the ternary operator must work like a statement and not an expression: #include <iostream> #include <cstdlib> void one() { std::cout << 1; } void two() { std::cout << 2; } int main() { std::srand(std::time(NULL)); (std::rand() % 2) ? one() : two(); return 0; } Ever wanted to call functions in another process? ProcessCall UDFConsole stuff: Console UDFC Preprocessor for AutoIt OMG
jvanegmond Posted May 31, 2012 Posted May 31, 2012 That's what she said.Always wanted to say that in non-joke context. James 1 github.com/jvanegmond
trancexx Posted May 31, 2012 Posted May 31, 2012 Common way to refer to an 'autonomous expression' would be 'statement'. For example:Ternary expression is not a statement.Yes, thanks.I don't know what someone would call an expression that also works as a statement, like a function call is both an expression and a statement depending on context.Autonomous expression? jvanegmond 1 ♡♡♡ . eMyvnE
UEZ Posted May 31, 2012 Posted May 31, 2012 (edited) Getting an error with Beta v3.3.9.5 with this code: expandcollapse popup#include <gdiplus.au3> #include <guiconstantsex.au3> #include <guirichedit.au3> #include <windowsconstants.au3> Break(0) Opt("MustDeclareVars", 1) Opt("GUIOnEventMode", 0) Global Const $title = "File to Base64 String Code Generator " #region GUI Global Const $ver = "v1.09 Build 2012-05-31" Global Const $width = 642 Global Const $height = 540 Global Const $hGUI = GUICreate($title & $ver & " by UEZ", $width, $height, -1, -1, -1, $WS_EX_ACCEPTFILES + $WS_EX_TOPMOST) GUISetFont(8, 400, 0, "Arial") Global $GUI_Color, $GUI_Color_def = "EAE3F3", $CompStrength_def = 1 Global Const $idButton_File = GUICtrlCreateButton("Test", 80, 12, 75, 25) _GDIPlus_Startup() Global Const $STM_SETIMAGE = 0x0172 Global $RE_BgColor = 0xFBFDFB Global $hRichEdit = _GUICtrlRichEdit_Create($hGUI, "", 8, 120, 625, $height - 125, BitOR($ES_MULTILINE, $WS_VSCROLL, $WS_HSCROLL, $ES_AUTOVSCROLL)) _GUICtrlRichEdit_SetLimitOnText($hRichEdit, 0xFFFFFF) _GUICtrlRichEdit_SetFont($hRichEdit, 9, "Arial") _GUICtrlRichEdit_SetCharColor($hRichEdit, 0x200000) ;BGR _GUICtrlRichEdit_SetCharBkColor($hRichEdit, 0xFBFDFB) ;BGR _GUICtrlRichEdit_SetBkColor($hRichEdit, $RE_BgColor) _GUICtrlRichEdit_SetReadOnly($hRichEdit, True) GUISetState(@SW_SHOW, $hGUI) #endregion GUI _GUICtrlRichEdit_SetText($hRichEdit, "Ready.") While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE _GUICtrlRichEdit_Destroy($hRichEdit) _GDIPlus_Shutdown() GUIDelete($hGUI) Exit Case $idButton_File _Credits() EndSwitch WEnd Func _Credits() GUICtrlSetState($idButton_File, $GUI_DISABLE) ToolTip("") Opt("GUIOnEventMode", 1) Local $sleep = 200 Local $save = _GUICtrlRichEdit_GetText($hRichEdit) _GUICtrlRichEdit_SetText($hRichEdit, "") _GUICtrlRichEdit_SetParaAlignment($hRichEdit, "c") _GUICtrlRichEdit_AppendText($hRichEdit, "{rtf1utf8{colortbl;red16green16blue16;}cf1 {fs24 {b " & $title & $ver & "}}cf0 line line }") Sleep($sleep) Local $Image_UEZ = StringMid(Image_UEZ(), 31) Local $binRtf = '{rtf1{pictdibitmap ' & $Image_UEZ & '}}' _GUICtrlRichEdit_AppendText($hRichEdit, @LF) _GUICtrlRichEdit_AppendText($hRichEdit, "{rtf1utf8{colortbl;red128green128blue255;}cf1 {fs32 {b Coded by}}cf0 line line }") Sleep(1000) _GUICtrlRichEdit_AppendText($hRichEdit, $binRtf) _GUICtrlRichEdit_AppendText($hRichEdit, @LF & @LF & @LF & @LF) Sleep($sleep) _GUICtrlRichEdit_AppendText($hRichEdit, "{rtf1utf8{colortbl;red0green128blue0;}cf1 {fs28 {i Credits to:}}cf0 line line }") Sleep(600) _GUICtrlRichEdit_SetFont($hRichEdit, 10, "Times Roman") Local $text = "Ward for the _Base64Encode() and MsgBoxEx() functions." & @LF & @LF & _ "trancexx for the LZNTCompress / LZNTDecompress and _Base64Decode() functions!" & @LF & @LF & @LF & _ "Press ESC to go back to code screen!" & @LF & @LF Local $aText = StringSplit($text, "", 2), $i For $i = 0 To UBound($aText) - 1 _GUICtrlRichEdit_AppendText($hRichEdit, $aText[$i]) Sleep(10) Next Local $dll = DllOpen("user32.dll") While Not _IsPressed("1B", $dll) * Sleep(50) WEnd DllClose($dll) _GUICtrlRichEdit_SetText($hRichEdit, "") _GUICtrlRichEdit_SetParaAlignment($hRichEdit, "l") _GUICtrlRichEdit_PauseRedraw($hRichEdit) _GUICtrlRichEdit_SetCharColor($hRichEdit, 0x000000) _GUICtrlRichEdit_AppendText($hRichEdit, $save) _GUICtrlRichEdit_ResumeRedraw($hRichEdit) Opt("GUIOnEventMode", 0) EndFunc #region Base64 strings Func Image_UEZ() Local $Image_UEZ $Image_UEZ &= '4LYgQk2GkQACADYECAAAKABwMAEAACJ3ADgBAAgCuFCNcAAAxA4DDABQAgAEAArMAISGrABEAEq5AGRqrADEAMbEACQqwgCkAKe3AFRaugA0BDq3AC7hAJSWrBUAFt4ATuMALusA5ATm5ABO3wC0trQAABQazAB0euwFAEfcAAe0ANTW1BAAlJncAC/SACQEJcIAM84ARD3uAQA3ywBkZOEAtAC53AAsMr8AVAxU5ABbADty4gA0AC7jAMnK5ACkAKbcAJSS5gCEBInHAC/4AJSXyQAAhILeAIyQ3FAAnJ/7AC/2AE/0AAD09vUAPELNAABcYsoAbHLLEAA8PPWAQ9QAJAAh1wBMUs0AzEDP5wAUEs+ABbkFgBO1gEvGANTX/IAAREXeAMTCgE0UNOGAQdSAO9QAvAS+vIAP+wCMjssFgGnOgCm4AOzu7FAApKrEgB3egCHmIYAJ6gCssoBBnsUVgCH2gB/ugB/iAIQEh/yAUfwAZGX3AABUVfcAJCbYBYBHtIAB7AAcIsxQALS3/IBv+oBH+wgAFBaAtYLMANwA3uwAzM7MAGwAbd8APD3dAEwgTeQAXFyABTzGAABcXcYANDO4FYANx4AzyIArxwB0THXFgJWAAVWygAmxAAB8gtQA5Oj3CAAsLIC/t80ATARMx4BP+ACMj/sQAKSi8cAe9wB8FHzLwAn7wAaxACwALboArK6sAFwUXrPAG7LAMLQAHAAbwwBsZuwAXARW7MAj3AC0stEDwHzAMpH8ALy//AAArK/7AISB/FXARLzAEd/AALTAhtkQAMTI+8AHzwAMBBLMwEX0APz+/EHAOdUAdHb8wDfUgACMirkAbGzAGCCauQC8usAOfN0BwATkAHx7rADcStrAT5rAfibMwATMAcACygAsIuQATARG7MB80ABkZrNQAPTy9MAqycAx1AHATbwA5OL0ANTU0tTAJ7TABLHAY8A9ACbhAAwMzADMQMrMAOzq7MAZ4BXATffATPfAUvYA/DL6wCQc1sANwDba+wAAPDbkADQ11FXAfcTAI/zAQ9LAHPQAADw17ACMifxTwCHANLr7wAv7wBP1A8ACwFfi5ACsqvzVwAz7wB78wBrUwADBA4HAcIi8ALS4xMB+AcAtluwAJCTMAKhkY+zAZ+zAauzAlK3AjqjBw8DBlsBEj8AICcA5REXAG4/UAOwC78AcodQA3OD8tcBK7MB97MAtwGJcwQKm1MAywKUzxMAz1MAMZtTAFsBCc9TAgMAAVWC8AERGvMAwwAxMANQApKH8AHx9ptTAD8AELMRgB7xgPFC8ABwd4CuS4AtuuWAwfbzgSGAC4E984DQYHBbX4GhhF7wAkB8fAB8AHwAfAB8AxG63ADaxHR2xNrdu/sS/BR8AHwAfAB8AHwAcAAC3pqamnp4dtwN/HmkGnvJleXnzAHkYNPYYGJ158Hl5ZWZiCJ8IHwAfAA8fAB8AHwDyHnt589EAtls3N/Z+eXwGnL8d4kqm8vO9VACgra3uoKDaNADaNLa2tv39kwA3N1t+GHl57P5mXy8fAB8AHwAfAA8ADwCBCQCm7OY0VNUAAACt2ra2N66urhgYZrGvDt4SeTTVAE6/1dXuraDa3XAD/cAS4BIkADcAAGAT+GtpJp8EDwAPAA8ADwB/DwAPAA8ADwAPAA8ACACxAOx52r+/v9XuGFTa2vIhABOuW3wGHZ8COhbzNNUyv2kQFjS2MQM3cQOQAzccN46hEgEBQhOuflf4eWaejyYPAA8ADwAPAH8PAA8ADwAPAA8ADwADAB3AZTTVv7/uICKyEjXSEgAxJlxPDsclp9HQb05O1cASkwIDIAP8AAAwAJIDAgAiE3QUMBPrzwQiKmYAAN7PTg8ADwD/DwAPAA8ADwAPAA8A2SVQNXzVb8ASQw8AD5EPEg98A38MhQ7sW9oib9r8NJOyFSIDAgDSAEcT0BdhAwCON64YT1EgKm8ArTT9Nxh5Zqb/HygPAA8ADwAPAA8A' $Image_UEZ &= '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' $Image_UEZ &= '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' $Image_UEZ &= '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' $Image_UEZ &= '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' $Image_UEZ &= 'YClSYSYzhGA+YSb/gEkCXbUqAyvDcoEq9GDADQHmDV6l6HJSsgzr0BsAOQwQOaj/Cg8A23/8sLChBfMH0AU0MSEA6DFsXmMgSBAAPgAT8UtSHOi33wQPAAIAeyeSXFLioSUSKtAWJ9ADtZf1ngYABAGopwC1OWIpw6EtAG1TUlMH9KEgl/9RmMOrspbRKiUrsVMVmQGxB4IUchTwDZXiUnJTCDxgugET4uLo1+/vCg8A60vwOLDCGWSLh5+j0qC0MWTkYGCU5GAG5AvkEQ9hsd8EDwADAOBkUrNTSCByUA9QEweRNe+IBQAmbCY2DjXFAAdBBxfgdVAWPI/4Uids0jPSj3ALEADSvH8mAEUA4gGCpHOrQwzzEw7AG1OzsuJIIQUAJvxh7W8fDwANEwexBDFTxcPTBxQAMWBI5DA1EBPBUAAMJ1KP3M8EDwDBAwC37yxyPAATQDkPkIWTIl8CAwDEGzwv0GynHcTiPqchAxIAxGAXAJhS7W5nCxEA/3UocACiADkrZNH1EyIAMQ7Ai+9SLLLiIQUwmPhJ4mx/RQ8A+hIQExIAD4IFYwaNMhAAJmNIYA4vwCEQAJAsU3KyZIfPBA8ABACnU1JJABOD8SXgAzyPsrIZfx0BBABVPDw8YGcvADmnaZ7eni9IJORIQmLkYIDnUhnkt8QCAA5uEACvAw8AD0QOEQBwDPEVLrVVjxCzUlMMsQxIDOL8STyP8A8Af+NSEQ8ABwAgsehISGAgE2BI6BdIL7EeGY8ZDwAFAAD0arUAslNhSEjkSGAAYC9gSEhhJ1IISZ6QFAC37eItADwMYWEMYegZgOjo5EhIL0gD5MBhsiy0Z+0CAAAMAmcAAmxsZPT09MCnJrG3bsQVnA4AALW1ZHKzcrQ8AGBI5GA8YUlJDGe3JjopAG45PDwOPAC5AO4AAuKyUmECsageNukn4gw8DEhggH2AmAxTUrICApZwpwzTYTyhwGFhYeLT04AEg7EAL2DoLbJSsuOM47KCAAEB4+OAABAg00ni7+gAnaexgSaZNmGzLLLiACmASEg84lPibKe1qSkA9EgATORBe+jAZRAnUrJpaQ9DGdOHAUzBWkAp07JSGZZ18LdnSVOAGgBMAAAATAZgAA1BAAwnsuOAgUcAsoCAJ4DTQQCBQFXiYUgvbB0lIyBpDXUsJwIjPAwwSdMZ6j9HEAAd6GEAMTxIPORBmUCIcgNXiJJbYUkMPDwvIDxg6Eg8gKcsU2Lclgp7YVPACoFnoUBhPGEMPC8CHeTtwk/iRgCAAB+AU4FUAQAJAAxnpiUj6VJ1UghTDGAAPwzi04+OAj9yHwAOAMTtPIEYCEg8YKAePElyUsZh3wwIALHo4gJMwAeSYAGYcu3WLbEZIG9y4iAN6EiAK4I0IwA8HyAQIQAAKSAA4AAMPGFjIlGCAmE87T8SAwCmIElZs3LTYgoMSZxTST9yHwAwRDwMAyYbIQAgRCcfcgkAZElJR4CRIQCAIFNyLNgte8ByknUsUh+GDWMGe0QnowAvgTbjASQDYMQtwx8fZaQnkrOyYC0gB+BhU9Nhpz8GHwAvRGcBOcMTIURSGb8TSRRhHkkATKQbYN34n7cwvMCDhoZRdbKAucBu96QiQHMhAAyjAAEBwiSmJpoMIHP0XxIDAGhSQJjhgn4MSSfTl6kfADfk3u3yEmBMEQ8QIh8/gQ8APfhP0wAm4QPvFt5hHIwA3aTfWCtzUHcIQrxyZCUMsllCApILAEKSdbMsLBjScrIwTDA50ydhBz9fDwAiGUlZklIn8WMpHycfjykPAA8ADwAZCzkMSQETxC+yLHJ+ZF8GDwAIOSFywQ+hDXIYsx9DPwIGEzCGpACQLqhahViGc6FWJElCwYMIAMcQAASGhkAAKytRUVCAQlJJYUmy448Pgw8A4y4NQlly0/EI+SByJzU/cg8ADwAPABoiDu8gSBNXgFYnUrPvt28sDwBXfGEAJqEDGUAAYEmys3JkPwI3kvQAmFjD' $Image_UEZ &= '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' $Image_UEZ &= 's0UuD8i0ApAWAFViUkrjDQEDAB8NUrOS0twDF7ABAG5x0+MfDQIfAAAN0+NSkocMLJ4bXjAAsUpzcwi8s2IAj+NSUrOENbdNXg2SdSyCeQBi0+OyUnV1YgIdJx7EHyxS4+MQDR9i0wAfDbIskJJ18sSbGEXjgDMCYgE2DQ3SdYdZAkXOl5Cns3NQQsEBaWJyUrNSHUguAAAwf0KzUuNiDSHCTFIsWbNpGFVKRwBMgA6CD+NSdR6YpwYfgQuBAGLTUnV3Bry/Mw8AIEKEUJIAcmKADbLSLLMM0mk/FAoAt2JCkhSzckCJYgFNLHVZxmKcPAsPLCxSAUvAAJBiDXKzHpie64RXwYAASrO8d+v/y48SQNRQc1B1siFeUjizLGI/DB8ACQB7LMq8ACZi4Rjj42CQfmoP6msgEoEtQgBKUnW8kkqlLben0QixNUIFgSIAsrNCUEqxfwwDHwAMAEP+UXO8deEhEnIsdSzfGR8AyjFAG0K8dbOygxjjMCyzQrNfWOcfYrMus2C+BCagLZLGE2g1MiQvFcRxgAXDBWLj4Cy8UOAmfwwfAK5+CpIAJiwgDUpSs7McLGkfJh8AqQtSd7wWdUCY4BhKgNx1WQ3jX1gGAGizdaF5wGuAIIPAOactVWIfAqZOFQ5FgAwgDYEN4yxCUBxC+l8MHwCvEndRUOaSQNEhmLPjf1gPAA8ARdgFkgATckrjARly4CxZQrMCHxkPAOV7L9E8sQOBIxBfkgVDsQ0gHErrArGsBGlinEqywgIQAACFd3GvBg8PAA8ADwA7M0qEUVDMdVIwUvAfs2r/Hw8ABw8ADwAEADYcd4eS7rPxDjAAIHKSX0UPAAUAQPp1h0J10lI2SoBicrOzQnVFJBCA+lJS49I1bDsmECYNSkrCErJK4+BSWXdQG78MDwAPAIMPAHxldVFRh3WQBvxyLAAT/x8PAA8ADwAni1BQd1lSggxKECySHFl4DwYPAKUcUFC8AxAmAAByStLSs1mEQtIUnKdiLNIQARAN8jrE5wSxatIMskrBEhAAcnW8wN+vGQ8ADwAPAF5svCBMkEJ98QxZT4UPAA8ADwA2DyBAh1C8ddJy4A2yHRAski9fDwDHFrzwK0jAvFLQA+PS4RySClkkXx2xYHLS0lLg0mryad40EwBfcgaBsBVK0rN3UNQfvg8PAA8ADwAuDXMrwELCf4AGUrNZdU+FDwDnDwAPABZ4CXNBIpAMAAAdIHKSLz8PAAUAZlGFMIZRUFlBEMARs3U0vBw0hWjgcjABUiwAs1JSYmoCaZ7Aph2xNgLSUhmgFcDSsrO8wLwfvg8A5w8ADwCOVf5RMV8ALiAcHz+SDwAPAA8AJ1/8c3eMklJyHwEZvHU6DwYDDwDkT+mFbrjLWMhRkizQCXLSQBLUFkBD0ry8kiwBJrMAs7NZs7PSHBzwYmJqUgETIAAQAACYCFDlagUA8uzyOAETAOn69HZpaZ7wJp6xHag8DwAPAHoviiswX9IBJnWSs0+Fzw8ADwAPAFdIc7wCEwAAD1FuRUgPAA8AJBM7tYCQpN+F8HOHMBPpIa94bhNfQnFRER4BEyBZkpL8vAAAUlKFUR9yEDxSklDAAAEGh1EBCQD8kvySWQCSWVn+HGJqNQjydt67Dp22ApAkAGiHK3OHswBSStIss1mSHAYdJdgjAFVZc3O8ALNS0tLSctJSQLNZvJLyxCc8sQDxWi6QkLVuWgCFhitzvJKSQgSzOgI9HRxzwHdEvCwAVVJ/swAAWQB1WVn8vId10gZSAAAAaiySvIe8/IeHggEBAIMDgwiAAAEAgJJZs7NiakUoRjEGALcSUYBGgD5SszB1kllqMSEYACC8DHNQAJiALtJSLLMYkrxZA3kjAMR78URatYADLt3fgJmDBIR3hHP0vMErgwhQLP5BTP5/UrOIUrOzgExZs/4BS+GABFmSkpLAA8EAAQDq/MIA/EAF/EAAgQBBBUCzsyx/AqZKQqYhAAAdsbe3myhD' $Image_UEZ &= '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' $Image_UEZ &= 'knVZdQMAAgHKWZK8UVCSELxzhDg2faYckhsAi4AnswEBAAKSkpIAQry8vHeHUFAAUHNzhFFRwSvAUVCHUOC3/5QCAADE5XWSc1HBwQEASjHnMAdo+mgAZjFmMTGY5xOAKtbCjLhupIOaQYCbpG7fO1qAmsEtgZpZAJpBTZLANnNR5OnEtR9tWUARQgCBEgJ3AUmEUSsrg/ACgwBwhlhYWMKFwcBwWIR37G7/Oj8AAcBLG1m8h1Dp6RA6prE2Sj3Et7EA3kOeZupm2dZIyN/EhU0uLkBNjHCFhoNRAU1COsBLCbV2f2rAq9TASgCVc8GSCPCDhoFIjIzLWhBaO1rDwABaWsvAjIyFg1B2/zo/AACQkDYcknVqJAIdGES3sUOeMeogExbIuN1oTbhaQMKGwXO8QiAdc2xRX/8ldAtkYZQAcIeUUIQgJVgCJctaACQAhVjJhoPB2c8AmOrn5zBqZna8dqa/CR8AHwA/FuU/EQHBTTaxQzFcmdYEy6ilJi7dqDuMuFjwwABD/yXVlwlAeoRCvKBwUYNYhiAkIPBRz5gxIyQ6Q+im3rGAXm6ffR8AHwAbHwDjS6Yfg6gFsUNpQGlmKsLLxIMmtcAubjvwc8H/JRQABp4gcaCWwHNzUc8A52RqdnZDpiT/QSQ/Bx8AHwAfAB8AHwAidCBo19DLbgRNK1Fu1P8lDwABACbyEvBT7Px23m8kDwAPAA8ADwAPAH8PAA8ADwAPAA8ADwCGKacQOiXIuDETxxKxh/8BDwAPAJCeQrzAS/gwaN6vAQ8ADwAPAA8A/w8ADwAPAA8ADwAPAA8AjCYAHWk6nFqkqM8P/xIPAA8A8Ti8QuWm/58lDwAPAA8ADwAPAA8ADwA/DwAPAA8ADwAPAHEmQ+ociZj/Eg8ADwCQkKLwQtT6HW8BDwAPAA8A/w8ADwAPAA8ADwAPAA8ADwA/DwC1c++IDwAPAAAAduX/b0sPAA8ADwAPAA8ADwAPAP8PAA8ADwAPAA8ADwAPAA8A/QsAQ49iDwAPAA8ADwAPAP8PAA8ADwAPAA8ADwAPAA8A/w8ADwAPAA8ADwAPAA8ADwAfDwAPAA8ADwACAAOwApCCAQ==' $Image_UEZ = _Base64Decode($Image_UEZ) Local $tSource = DllStructCreate('byte[' & BinaryLen($Image_UEZ) & ']') DllStructSetData($tSource, 1, $Image_UEZ) Local $tDecompress _WinAPI_LZNTDecompress($tSource, $tDecompress) $tSource = 0 Return Binary(DllStructGetData($tDecompress, 1)) EndFunc ;==>Image_UEZ #endregion Func Load_BMP_From_Mem($bImage, $hHBITMAP = False) If Not IsBinary($bImage) Then Return SetError(1, 0, 0) Local $aResult Local Const $memBitmap = Binary($bImage) ;load image saved in variable (memory) and convert it to binary Local Const $len = BinaryLen($memBitmap) ;get length of image Local Const $hData = _MemGlobalAlloc($len, $GMEM_MOVEABLE) ;allocates movable memory ($GMEM_MOVEABLE = 0x0002) Local Const $pData = _MemGlobalLock($hData) ;translate the handle into a pointer Local $tMem = DllStructCreate("byte[" & $len & "]", $pData) ;create struct DllStructSetData($tMem, 1, $memBitmap) ;fill struct with image data _MemGlobalUnlock($hData) ;decrements the lock count associated with a memory object that was allocated with GMEM_MOVEABLE $aResult = DllCall("ole32.dll", "int", "CreateStreamOnHGlobal", "handle", $pData, "int", True, "ptr*", 0) ;Creates a stream object that uses an HGLOBAL memory handle to store the stream contents If @error Then Return SetError(2, 0, 0) Local Const $hStream = $aResult[3] $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromStream", "ptr", $hStream, "int*", 0) ;Creates a Bitmap object based on an IStream COM interface If @error Then Return SetError(3, 0, 0) Local Const $hBitmap = $aResult[2] Local $tVARIANT = DllStructCreate("word vt;word r1;word r2;word r3;ptr data; ptr") DllCall("oleaut32.dll", "long", "DispCallFunc", "ptr", $hStream, "dword", 8 + 8 * @AutoItX64, _ "dword", 4, "dword", 23, "dword", 0, "ptr", 0, "ptr", 0, "ptr", DllStructGetPtr($tVARIANT)) ;release memory from $hStream to avoid memory leak $tMem = 0 $tVARIANT = 0 If $hHBITMAP Then Local Const $hHBmp = _GDIPlus_BitmapCreateDIBFromBitmap($hBitmap) _GDIPlus_BitmapDispose($hBitmap) Return $hHBmp EndIf Return $hBitmap EndFunc ;==>Load_BMP_From_Mem Func _GDIPlus_BitmapCreateDIBFromBitmap($hBitmap) Local $tBIHDR, $Ret, $tData, $pBits, $hResult = 0 $Ret = DllCall($ghGDIPDll, 'uint', 'GdipGetImageDimension', 'ptr', $hBitmap, 'float*', 0, 'float*', 0) If (@error) Or ($Ret[0]) Then Return 0 $tData = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $Ret[2], $Ret[3], $GDIP_ILMREAD, $GDIP_PXF32ARGB) $pBits = DllStructGetData($tData, 'Scan0') If Not $pBits Then Return 0 $tBIHDR = DllStructCreate('dword;long;long;ushort;ushort;dword;dword;long;long;dword;dword') DllStructSetData($tBIHDR, 1, DllStructGetSize($tBIHDR)) DllStructSetData($tBIHDR, 2, $Ret[2]) DllStructSetData($tBIHDR, 3, $Ret[3]) DllStructSetData($tBIHDR, 4, 1) DllStructSetData($tBIHDR, 5, 32) DllStructSetData($tBIHDR, 6, 0) $hResult = DllCall('gdi32.dll', 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBIHDR), 'uint', 0, 'ptr*', 0, 'ptr', 0, 'dword', 0) If (Not @error) And ($hResult[0]) Then DllCall('gdi32.dll', 'dword', 'SetBitmapBits', 'ptr', $hResult[0], 'dword', $Ret[2] * $Ret[3] * 4, 'ptr', DllStructGetData($tData, 'Scan0')) $hResult = $hResult[0] Else $hResult = 0 EndIf _GDIPlus_BitmapUnlockBits($hBitmap, $tData) Return $hResult EndFunc ;==>_GDIPlus_BitmapCreateDIBFromBitmap Func _Base64Decode($sB64String) ;code by trancexx Local $struct = DllStructCreate("int") Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $sB64String, "int", 0, "int", 1, "ptr", 0, "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0) If @error Or Not $a_Call[0] Then Return SetError(1, 0, "") Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]") $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $sB64String, "int", 0, "int", 1, "ptr", DllStructGetPtr($a), "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0) If @error Or Not $a_Call[0] Then Return SetError(2, 0, "") Return DllStructGetData($a, 1) EndFunc ;==>_Base64Decode Func _WinAPI_LZNTCompress(ByRef $tInput, ByRef $tOutput, $fMaximum = True) Local $tBuffer, $tWorkSpace, $Ret Local $COMPRESSION_FORMAT_LZNT1 = 0x0002, $COMPRESSION_ENGINE_MAXIMUM = 0x0100 If $fMaximum Then $COMPRESSION_FORMAT_LZNT1 = BitOR($COMPRESSION_FORMAT_LZNT1, $COMPRESSION_ENGINE_MAXIMUM) $tOutput = 0 $Ret = DllCall('ntdll.dll', 'uint', 'RtlGetCompressionWorkSpaceSize', 'ushort', $COMPRESSION_FORMAT_LZNT1, 'ulong*', 0, 'ulong*', 0) If @error Then Return SetError(1, 0, 0) If $Ret[0] Then Return SetError(2, $Ret[0], 0) $tWorkSpace = DllStructCreate('byte[' & $Ret[2] & ']') $tBuffer = DllStructCreate('byte[' & (2 * DllStructGetSize($tInput)) & ']') $Ret = DllCall('ntdll.dll', 'uint', 'RtlCompressBuffer', 'ushort', $COMPRESSION_FORMAT_LZNT1, 'ptr', DllStructGetPtr($tInput), 'ulong', DllStructGetSize($tInput), 'ptr', DllStructGetPtr($tBuffer), 'ulong', DllStructGetSize($tBuffer), 'ulong', 4096, 'ulong*', 0, 'ptr', DllStructGetPtr($tWorkSpace)) If @error Then Return SetError(3, 0, 0) If $Ret[0] Then Return SetError(4, $Ret[0], 0) $tOutput = DllStructCreate('byte[' & $Ret[7] & ']') If Not _WinAPI_MoveMemory(DllStructGetPtr($tOutput), DllStructGetPtr($tBuffer), $Ret[7]) Then $tOutput = 0 Return SetError(5, 0, 0) EndIf Return $Ret[7] EndFunc ;==>_WinAPI_LZNTCompress Func _WinAPI_MoveMemory($pDestination, $pSource, $iLenght) DllCall('ntdll.dll', 'none', 'RtlMoveMemory', 'ptr', $pDestination, 'ptr', $pSource, 'ulong_ptr', $iLenght) If @error Then Return SetError(1, 0, 0) Return 1 EndFunc ;==>_WinAPI_MoveMemory Func _WinAPI_LZNTDecompress(ByRef $tInput, ByRef $tOutput, $iBufferSize = 0x800000) Local $tBuffer, $Ret $tOutput = 0 $tBuffer = DllStructCreate('byte[' & $iBufferSize & ']') If @error Then Return SetError(1, 0, 0) $Ret = DllCall('ntdll.dll', 'uint', 'RtlDecompressBuffer', 'ushort', 0x0002, 'ptr', DllStructGetPtr($tBuffer), 'ulong', $iBufferSize, 'ptr', DllStructGetPtr($tInput), 'ulong', DllStructGetSize($tInput), 'ulong*', 0) If @error Then Return SetError(2, 0, 0) If $Ret[0] Then Return SetError(3, $Ret[0], 0) $tOutput = DllStructCreate('byte[' & $Ret[6] & ']') If Not _WinAPI_MoveMemory(DllStructGetPtr($tOutput), DllStructGetPtr($tBuffer), $Ret[6]) Then $tOutput = 0 Return SetError(4, 0, 0) EndIf Return $Ret[6] EndFunc ;==>_WinAPI_LZNTDecompress EM: : ==> Variable cannot be accessed in this manner.: Local $Image_UEZ = StringMid(Image_UEZ(), 31) Local $Image_UEZ = StringMid(Image_UEZ^ ERROR Press Test button. Br, UEZ Edited May 31, 2012 by UEZ Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ
Valik Posted May 31, 2012 Author Posted May 31, 2012 Bad code. You're using variables with the same name as functions. Now that $ is optional and functions are first class objects and can be stored in variables you've gone and confused the heck out of AutoIt.
UEZ Posted May 31, 2012 Posted May 31, 2012 Aha, now I remember one of the new features using variables without $ as prefix and it makes sense now why it is not working! Thanks for clarification! Br, UEZ Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ
trancexx Posted May 31, 2012 Posted May 31, 2012 No it doesn't make sense. Optionality of $ is meant to be fully backward compatible. That code works just fine with current dev version of AutoIt. ♡♡♡ . eMyvnE
UEZ Posted May 31, 2012 Posted May 31, 2012 (edited) According to the logic that "bad code" is not working why is this working?$test = StringMid(test(), 2) Func test() Local $test = "test" Return $test EndFuncI assume that it is a bug that the function in line Local $Image_UEZ = StringMid(Image_UEZ(), 31) is intepretated as a variable but in the example above it isn't.Br,UEZ Edited May 31, 2012 by UEZ Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ
trancexx Posted May 31, 2012 Posted May 31, 2012 Then why in the world did you say that it makes sense? ♡♡♡ . eMyvnE
UEZ Posted May 31, 2012 Posted May 31, 2012 Because I followed Valik's logic and remembered the new prefix feature but read your post and thought twice whether it makes really sense. Br, UEZ Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ
BrewManNH Posted May 31, 2012 Posted May 31, 2012 (edited) According to the logic that "bad code" is not working why is this working? $test = StringMid(test(), 2) Func test() Local $test = "test" Return $test EndFunc Br, UEZ If you declare the first instance of $test as a Local or Global variable, you get the same error message in 3.3.9.5. Global $test = StringMid(test(), 2) ; ^ this will cause an error in 3.3.9.5, but works fine in 3.3.8.1 Func test() Local $test = "test" Return $test EndFunc BTW, it passes Au3Check in both forms, with and without the scope declaration. Edited May 31, 2012 by BrewManNH If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator
trancexx Posted May 31, 2012 Posted May 31, 2012 Because I followed Valik's logic and remembered the new prefix feature but read your post and thought twice whether it makes really sense.Br,UEZ So you are saying: "I wasn't thinking. I had to have a reaction before thinking because I don't want someone to think that I'm unable to comprehend. They might think I'm kind of stupid."The result of that turned to be completely the opposite. How about that. ♡♡♡ . eMyvnE
trancexx Posted May 31, 2012 Posted May 31, 2012 ...Oh, and relax. I'm just fucking with you. ♡♡♡ . eMyvnE
UEZ Posted May 31, 2012 Posted May 31, 2012 Hmm, right any declaration (global, local, static) is causing the em whereas no declaration is working. Br, UEZ Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ
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