Jump to content

Latest Beta


Valik
 Share

Recommended Posts

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?

Link to comment
Share on other sites

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 by trancexx
Reworded

♡♡♡

.

eMyvnE

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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?

♡♡♡

.

eMyvnE

Link to comment
Share on other sites

Getting an error with Beta v3.3.9.5 with this code:

#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 &= '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'
    $Image_UEZ &= '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'
    $Image_UEZ &= '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'
    $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 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!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to comment
Share on other sites

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

I 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 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!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to comment
Share on other sites

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!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to comment
Share on other sites

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 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 Gude
How 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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...