Jump to content

[Solved] DllStruct issue.


Recommended Posts

I'm writing to element 1, index 0 of a struct declared similar to the following...

DllStructCreate("wchar[20]")

Thing is, I'm doing something wrong, here is reproducer.

$TestStruct = _StringToStruct(@ScriptDir & "\file.ext")

Func _StringToStruct($string)
    ConsoleWrite("$string = " & $string & @LF)
    Local $iLen = StringLen($string)
    ConsoleWrite("$iLen = " & $iLen & @LF)
    Local $aString = StringSplit($string, "", 2)
    ConsoleWrite("UBound($aString) = " & UBound($aString) & @LF)
    Local $Struct = DllStructCreate("wchar[" & String($iLen + 2) & "]")
    For $i = 0 To $iLen - 1
        If $i = 0 Then
            ConsoleWrite("Adding " & $aString[$i] & " to struct index " & $i & @LF)
        EndIf

        DllStructSetData($Struct, 1, $aString[$i], $i)
    Next
    ConsoleWrite("Expect Struct index 0 to equal C" & @LF)
    ConsoleWrite("! Struct index 0 = ")
    ConsoleWrite(DllStructGetData($Struct, 1, 0))
    ConsoleWrite(@LF)

    Return $Struct
EndFunc   ;==>_StringToStruct

Here is console output.

$string = C:\Documents and Settings\JOHN\Documents\MYCODE\AU3\TestScripts\file.ext
$iLen = 72
UBound($aString) = 72
Adding C to struct index 0
Expect Struct index 0 to equal C
! Struct index 0 = 0

I don't get it, can someone spot my error?

Edited by JohnOne

AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

Link to comment
Share on other sites

No...

Local $tStruct = DllStructCreate('int;int')
DllStructSetData($tStruct, 0, 100) ; Change to 1.
ConsoleWrite(DllStructGetData($tStruct, 0) & @CRLF) ; Change to 1.

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to comment
Share on other sites

I'm not now after seeing a Lars post next door, but it was because I'm a grade A jackass.

Oh and my whole problem stemmed from wchar, I changed it to char and it's all warm chicken soup now :)

But I swear I followed PCZZTSTR and it ended up at wchar_t :(

AutoIt Absolute Beginners    Require a serial    Pause Script    Video Tutorials by Morthawt   ipify 

Monkey's are, like, natures humans.

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...