Jump to content
Sign in to follow this  
JohnOne

[Solved] DllStruct issue.

Recommended Posts

JohnOne

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.

Share this post


Link to post
Share on other sites
guinness

No...

Local $tStruct = DllStructCreate('int;int')
DllStructSetData($tStruct, 0, 100) ; Change to 1.
ConsoleWrite(DllStructGetData($tStruct, 0) & @CRLF) ; Change to 1.
  • Like 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

Share this post


Link to post
Share on other sites
trancexx

JohnOne why in the world would you be setting characters one by one, and not the whole string at once?


♡♡♡

.

eMyvnE

Share this post


Link to post
Share on other sites
JohnOne

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.

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  

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.