Leaderboard
Popular Content
Showing content with the highest reputation on 06/20/2021 in all areas
-
@Subz The requirements are confusing. For the fun... #include <Array.au3> $sFile = FileRead(@ScriptDir & "\Example.txt") $a1 = _getArray("Marker1") $a2 = _getArray("Marker2") $a3 = _getArray("Marker3") _ArrayDisplay($a1) _ArrayDisplay($a2) _ArrayDisplay($a3) Func _getArray($header) ; including the header Local $s = StringRegExpReplace($sFile, '(?ms).*?(' & $header & '.*?)(?=\R{2}|\z).*', "$1") ; excluding the header ;Local $s = StringRegExpReplace($sFile, '(?ms).*?' & $header & '\R(.*?)(?=\R{2}|\z).*', "$1") Return StringRegExp($s, '\N+', 3) EndFunc1 point
-
Try something similar to this: Global $tagGRIDNOTIFY = $tagNMHDR & ";UINT col;UINT row;UINT hwnd;ptr lpdata;UINT fcancel" The example with some of the notifications working: #cs ---------------------------------------------------------------------------- funkey, Feb 8, 2012 https://www.autoitscript.com/forum/topic/137333-ragriddll/?do=findComment&comment=961420 RaGrid download: ;KetilO, 2009 ;http://www.asmcommunity.net/forums/topic/?id=29679 Code examples: http://c--sphinx.narod.ru/exampl_e.htm https://maul-esel.github.io/FormsFramework/files/RaGrid/RaGrid-ahk.html https://www.purebasic.fr/english/viewtopic.php?t=47141 https://bcxbasiccoders.com/bcxusers/ian/Miscellaneous%20Code.html bcx_raGridWrappers.inc #ce ---------------------------------------------------------------------------- #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> #include <Color.au3> ; #CONSTANTS# =================================================================================================================== ;gnozal, Aug 11, 2011 ;https://www.purebasic.fr/english/viewtopic.php?t=47141 ;http://www.pbosl.purearea.net/pbosl_examples.zip [in .\pbosl_examples\PBOSL4\EXAMPLES\PBOSL_CreateGadget\ ] ;Messages Global Const $GM_ADDCOL = $WM_USER + 1 ;wParam=0, lParam=lpCOLUMN Global Const $GM_ADDROW = $WM_USER + 2 ;wParam=0, lParam=lpROWDATA (can be NULL) Global Const $GM_INSROW = $WM_USER + 3 ;wParam=nRow, lParam=lpROWDATA (can be NULL) Global Const $GM_DELROW = $WM_USER + 4 ;wParam=nRow, lParam=0 Global Const $GM_MOVEROW = $WM_USER + 5 ;wParam=nFromRow, lParam=nToRow Global Const $GM_COMBOADDSTRING = $WM_USER + 6 ;wParam=nCol, lParam=lpszString Global Const $GM_COMBOCLEAR = $WM_USER + 7 ;wParam=nCol, lParam=0 Global Const $GM_GETCURSEL = $WM_USER + 8 ;wParam=0, lParam=0 Global Const $GM_SETCURSEL = $WM_USER + 9 ;wParam=nCol, lParam=nRow Global Const $GM_GETCURCOL = $WM_USER + 10 ;wParam=0, lParam=0 Global Const $GM_SETCURCOL = $WM_USER + 11 ;wParam=nCol, lParam=0 Global Const $GM_GETCURROW = $WM_USER + 12 ;wParam=0, lParam=0 Global Const $GM_SETCURROW = $WM_USER + 13 ;wParam=nRow, lParam=0 Global Const $GM_GETCOLCOUNT = $WM_USER + 14 ;wParam=0, lParam=0 Global Const $GM_GETROWCOUNT = $WM_USER + 15 ;wParam=0, lParam=0 Global Const $GM_GETCELLDATA = $WM_USER + 16 ;wParam=nRowCol, lParam=lpData Global Const $GM_SETCELLDATA = $WM_USER + 17 ;wParam=nRowCol, lParam=lpData (can be NULL) Global Const $GM_GETCELLRECT = $WM_USER + 18 ;wParam=nRowCol, lParam=lpRECT Global Const $GM_SCROLLCELL = $WM_USER + 19 ;wParam=0, lParam=0 Global Const $GM_GETBACKCOLOR = $WM_USER + 20 ;wParam=0, lParam=0 Global Const $GM_SETBACKCOLOR = $WM_USER + 21 ;wParam=nColor, lParam=0 Global Const $GM_GETGRIDCOLOR = $WM_USER + 22 ;wParam=0, lParam=0 Global Const $GM_SETGRIDCOLOR = $WM_USER + 23 ;wParam=nColor, lParam=0 Global Const $GM_GETTEXTCOLOR = $WM_USER + 24 ;wParam=0, lParam=0 Global Const $GM_SETTEXTCOLOR = $WM_USER + 25 ;wParam=nColor, lParam=0 Global Const $GM_ENTEREDIT = $WM_USER + 26 ;wParam=nCol, lParam=nRow Global Const $GM_ENDEDIT = $WM_USER + 27 ;wParam=nRowCol, lParam=fCancel Global Const $GM_GETCOLWIDTH = $WM_USER + 28 ;wParam=nCol, lParam=0 Global Const $GM_SETCOLWIDTH = $WM_USER + 29 ;wParam=nCol, lParam=nWidth Global Const $GM_GETHDRHEIGHT = $WM_USER + 30 ;wParam=0, lParam=0 Global Const $GM_SETHDRHEIGHT = $WM_USER + 31 ;wParam=0, lParam=nHeight Global Const $GM_GETROWHEIGHT = $WM_USER + 32 ;wParam=0, lParam=0 Global Const $GM_SETROWHEIGHT = $WM_USER + 33 ;wParam=0, lParam=nHeight Global Const $GM_RESETCONTENT = $WM_USER + 34 ;wParam=0, lParam=0 Global Const $GM_COLUMNSORT = $WM_USER + 35 ;wParam=nCol, lParam=0=Ascending, 1=Descending, 2=Invert Global Const $GM_GETHDRTEXT = $WM_USER + 36 ;wParam=nCol, lParam=lpBuffer Global Const $GM_SETHDRTEXT = $WM_USER + 37 ;wParam=nCol, lParam=lpszText Global Const $GM_GETCOLFORMAT = $WM_USER + 38 ;wParam=nCol, lParam=lpBuffer Global Const $GM_SETCOLFORMAT = $WM_USER + 39 ;wParam=nCol, lParam=lpszText Global Const $GM_CELLCONVERT = $WM_USER + 40 ;wParam=nRowCol, lParam=lpBuffer Global Const $GM_RESETCOLUMNS = $WM_USER + 41 ;wParam=0, lParam=0 Global Const $GM_GETROWCOLOR = $WM_USER + 42 ;wParam=nRow, lParam=lpROWCOLOR Global Const $GM_SETROWCOLOR = $WM_USER + 43 ;wParam=nRow, lParam=lpROWCOLOR Global Const $GM_GETCOLDATA = $WM_USER + 44 ;wParam=nCol, lParam=lpCOLUMN ;Column alignment Global Const $GA_ALIGN_LEFT = 0 Global Const $GA_ALIGN_CENTER = 1 Global Const $GA_ALIGN_RIGHT = 2 ;Column types Global Const $TYPE_EDITTEXT = 0 ;String Global Const $TYPE_EDITLONG = 1 ;Long Global Const $TYPE_CHECKBOX = 2 ;Long Global Const $TYPE_COMBOBOX = 3 ;Long Global Const $TYPE_HOTKEY = 4 ;Long Global Const $TYPE_BUTTON = 5 ;String Global Const $TYPE_IMAGE = 6 ;Long Global Const $TYPE_DATE = 7 ;Long Global Const $TYPE_TIME = 8 ;Long Global Const $TYPE_USER = 9 ;0=String, 1 to 512 bytes binary data Global Const $TYPE_EDITBUTTON = 10 ;String ;Column sorting Global Const $SORT_ASCENDING = 0 Global Const $SORT_DESCENDING = 1 Global Const $SORT_INVERT = 2 ;Window styles Global Const $STYLE_NOSEL = 0x1 Global Const $STYLE_NOFOCUS = 0x2 Global Const $STYLE_HGRIDLINES = 0x4 Global Const $STYLE_VGRIDLINES = 0x8 Global Const $STYLE_GRIDFRAME = 0x10 Global Const $STYLE_NOCOLSIZE = 0x20 Global Const $ODT_GRID = 6 ;~ Global Const $PB_EventType_Grid_HeaderClick = 1 ;User clicked header ;~ Global Const $PB_EventType_Grid_ButtonClick = 2 ;Sendt when user clicks the button in a button cell ;~ Global Const $PB_EventType_Grid_CheckClick = 3 ;Sendt when user double clicks the checkbox in a checkbox cell ;~ Global Const $PB_EventType_Grid_ImageClick = 4 ;Sendt when user double clicks the image in an image cell ;~ Global Const $PB_EventType_Grid_BeforeSelChange = 5 ;Sendt when user request a selection change ;~ Global Const $PB_EventType_Grid_AfterSelChange = 6 ;Sendt after a selection change ;~ Global Const $PB_EventType_Grid_BeforeEdit = 7 ;Sendt before the cell edit control shows ;~ Global Const $PB_EventType_Grid_AfterEdit = 8 ;Sendt when the cell edit control is about to close ;~ Global Const $PB_EventType_Grid_BeforeUpdate = 9 ;Sendt before a cell updates grid data ;~ Global Const $PB_EventType_Grid_AfterUpdate = 10 ;Sendt after grid data has been updated ;~ Global Const $PB_EventType_Grid_UserConvert = 11 ;Sendt when user cell needs to be converted. ;funkey, Feb 8, 2012 ;https://www.autoitscript.com/forum/topic/137333-ragriddll/?do=findComment&comment=961420 Global Const $__RAGRIDCONSTANT_DEFAULT_GUI_FONT = 17 Global Const $GN_HEADERCLICK = 1 ;User clicked header Global Const $GN_BUTTONCLICK = 2 ;Sendt when user clicks the button in a button cell Global Const $GN_CHECKCLICK = 3 ;Sendt when user double clicks the checkbox in a checkbox cell Global Const $GN_IMAGECLICK = 4 ;Sendt when user double clicks the image in an image cell Global Const $GN_BEFORESELCHANGE = 5 ;Sendt when user request a selection change Global Const $GN_AFTERSELCHANGE = 6 ;Sendt after a selection change Global Const $GN_BEFOREEDIT = 7 ;Sendt before the cell edit control shows Global Const $GN_AFTEREDIT = 8 ;Sendt when the cell edit control is about to close Global Const $GN_BEFOREUPDATE = 9 ;Sendt before a cell updates grid data Global Const $GN_AFTERUPDATE = 10 ;Sendt after grid data has been updated Global Const $GN_USERCONVERT = 11 ;Sendt when user cell needs to be converted. Global $Form Global $hGrid Global $hLib Global $hFont Global $lf = DllStructCreate($tagLOGFONT) Global $tagGRIDNOTIFY = $tagNMHDR & ";UINT col;UINT row;UINT hwnd;ptr lpdata;UINT fcancel" Global Const $IDC_GRID = 101 Global $hWndSaveFocus = 0 ;take a little time to fill grid on startup with a large number Global Const $iRows = 500 Main() Func Main() FormLoad() If @error = 0 Then ;WinFlash($Form) GUIRegisterMsg($WM_NCACTIVATE, "MY_WM_COMMAND") GUIRegisterMsg($WM_NOTIFY, "MY_WM_COMMAND") GUIRegisterMsg($WM_DESTROY, "MY_WM_COMMAND") While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE ExitLoop ;Case $IDC_GRID ;WinFlash($Form) EndSwitch WEnd GUIRegisterMsg($WM_NCACTIVATE, "") GUIRegisterMsg($WM_NOTIFY, "") GUIRegisterMsg($WM_DESTROY, "") EndIf $lf = 0 EndFunc ;==>Main Func FormLoad() Local $wx = 700 Local $wh = 500 $Form = GUICreate("RAGrid Sample Program", $wx, $wh, 0, 0) $hLib = DllOpen(@ScriptDir & "\RAGrid.dll") If $hLib <> -1 Then Local $style = BitOR($WS_CHILD, $WS_VISIBLE, $STYLE_HGRIDLINES, $STYLE_VGRIDLINES, $STYLE_GRIDFRAME, $STYLE_NOSEL) $hGrid = _WinAPI_CreateWindowEx($WS_EX_CLIENTEDGE, "RAGrid", "", $style, 10, 10, $wx - 15, $wh - 35, $Form, $IDC_GRID) If $hGrid Then GridSetup($hGrid) ColorTheGrid($hGrid, $iRows) EndIf Else MsgBox(266288, "Error", "RaGrid.dll failed to load") GUIDelete($Form) Return SetError(1, 0, 0) EndIf GUISetState(@SW_SHOW) EndFunc ;==>FormLoad Func MY_WM_COMMAND($hWnd, $CBMSG, $wParam, $lParam) Switch $CBMSG Case $WM_NCACTIVATE If Not $wParam Then ; Save control focus $hWndSaveFocus = _WinAPI_GetFocus() ElseIf $hWndSaveFocus Then ; Restore control focus _WinAPI_SetFocus($hWndSaveFocus) $hWndSaveFocus = 0 EndIf Case $WM_NOTIFY ; Process grid notifications Local $pnmh = DllStructCreate($tagGRIDNOTIFY, $lParam) If DllStructGetData($pnmh, "hwndFrom") = $hGrid Then Switch DllStructGetData($pnmh, "Code") Case $GN_HEADERCLICK ; Sort the grid by column, invert sorting order _SendMessage($hGrid, $GM_COLUMNSORT, DllStructGetData($pnmh, "col"), $SORT_INVERT) ColorTheGrid($hGrid, $iRows) ConsoleWrite("$GN_HEADERCLICK, Col: " & DllStructGetData($pnmh, "col") & @CRLF) Case $GN_BEFORESELCHANGE ;User request a selection change _SendMessage($hGrid, $GM_GETCURSEL, 0, 0) ConsoleWrite("$GN_BEFORESELCHANGE Row: " & DllStructGetData($pnmh, "row") & " Col: " & DllStructGetData($pnmh, "col") & @CRLF) Case $GN_AFTERSELCHANGE ;after a selection change ConsoleWrite("$GN_AFTERSELCHANGE" & @CRLF) Case $GN_BEFOREEDIT ;before the cell edit control shows ConsoleWrite("$GN_BEFOREEDIT" & @CRLF) Case $GN_AFTEREDIT ;when the cell edit control is about to close ConsoleWrite("$GN_AFTEREDIT Data:" & DllStructGetData($pnmh, "lpdata") & @CRLF) ;not working: not returning data Case $GN_BEFOREUPDATE ;before a cell updates grid data ConsoleWrite("$GN_BEFOREUPDATE" & @CRLF) Case $GN_AFTERUPDATE ;after grid data has been updated ConsoleWrite("$GN_AFTERUPDATE" & @CRLF) EndSwitch EndIf Case $WM_DESTROY _WinAPI_DeleteObject($hFont) EndSwitch EndFunc ;==>MY_WM_COMMAND Func GridSetup($hWnd) Local $lpzhdrtext, $lpsz, $r, $c, $z Local $col = DllStructCreate("UINT colwt;UINT lpszhdrtext;UINT halign;UINT calign;UINT ctype;UINT ctextmax;UINT lpszformat;UINT himl;UINT hdrflag") If @error Then MsgBox($MB_SYSTEMMODAL, "ERROR", "Error: " & _WinAPI_GetLastErrorMessage()) MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), Default, "Error in DllStructCreate, Code: " & @error) EndIf For $i = 1 To 5 ; Create and format 5 columns $lpzhdrtext = DllStructCreate("wchar[1]") ;$lpzhdrtext = DllStructCreate("char[1]") DllStructSetData($lpzhdrtext, 1, Chr(64 + $i)) DllStructSetData($col, "colwt", 130) DllStructSetData($col, "lpszhdrtext", DllStructGetPtr($lpzhdrtext)) DllStructSetData($col, "halign", $GA_ALIGN_CENTER) DllStructSetData($col, "calign", $GA_ALIGN_CENTER) DllStructSetData($col, "ctype", $TYPE_EDITTEXT) DllStructSetData($col, "ctextmax", 31) DllStructSetData($col, "lpszformat", 0) DllStructSetData($col, "himl", 0) DllStructSetData($col, "hdrflag", 0) _SendMessage($hWnd, $GM_ADDCOL, 0, DllStructGetPtr($col)) Next DllStructSetData($lf, "Height", -12) ; Our grid will use 10 point Arial font If @error Then MsgBox($MB_SYSTEMMODAL, "ERROR", "Error: " & _WinAPI_GetLastErrorMessage()) MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), Default, "Error in DllStructCreate, Code: " & @error) EndIf DllStructSetData($lf, "FaceName", "SEGOE IU") If @error Then MsgBox($MB_SYSTEMMODAL, "ERROR", "Error: " & _WinAPI_GetLastErrorMessage()) MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), Default, "Error in DllStructCreate, Code: " & @error) EndIf $hFont = _WinAPI_CreateFontIndirect($lf) _SendMessage($hGrid, $WM_SETFONT, $hFont, 0) If @error Then MsgBox($MB_SYSTEMMODAL, "ERROR", "Error: " & _WinAPI_GetLastErrorMessage()) MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), Default, "Error in DllStructCreate, Code: " & @error) EndIf For $i = 1 To $iRows ; Create 32,765 blank rows _SendMessage($hGrid, $GM_ADDROW, 0, 0) Next If @error Then MsgBox($MB_SYSTEMMODAL, "ERROR", "Error: " & _WinAPI_GetLastErrorMessage()) MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), Default, "Error in DllStructCreate, Code: " & @error) EndIf For $r = 0 To $iRows - 1; Fill our grid with some data For $c = 0 To 4 $z = String(Random(0, $iRows)) $lpsz = DllStructCreate("char[" & StringLen($z) + 1 & "]") DllStructSetData($lpsz, 1, $z) _SendMessage($hGrid, $GM_SETCELLDATA, _WinAPI_MakeLong($c, $r), DllStructGetPtr($lpsz)) Next Next EndFunc ;==>GridSetup Func ColorTheGrid($hWnd, $Rows) Local $grc = DllStructCreate("UINT backcolor;UINT textcolor") DllStructSetData($grc, "backcolor", _MakeRGB(0, 240, 230)) DllStructSetData($grc, "textcolor", 0) For $i = 0 To $Rows - 1 Step 2 _SendMessage($hWnd, $GM_SETROWCOLOR, $i, DllStructGetPtr($grc)) Next DllStructSetData($grc, "backcolor", _MakeRGB(255, 255, 255)) DllStructSetData($grc, "textcolor", 0) For $i = 1 To $Rows Step 2 _SendMessage($hWnd, $GM_SETROWCOLOR, $i, DllStructGetPtr($grc)) Next $grc = 0 EndFunc ;==>ColorTheGrid Func _MakeRGB($b, $g, $r) Local $aRGB[3] $aRGB[0] = $r $aRGB[1] = $g $aRGB[2] = $b Return _ColorSetRGB($aRGB) EndFunc ;==>_MakeRGB1 point
-
Using StringReplace() is fine to blanket convert all commas. In case there are any commas in the string that don't need converting, here is a conditional converting method. Local $sOrigString = 'When a comma is between digits, replace with a point e.g. StringReplace("1,62918,", ",", ".")' Local $sString = StringRegExpReplace($sOrigString, "(?<=\d),(?=\d)", ".") Local $iReplacements = @extended MsgBox(4096, "", $iReplacements & " replacement" & _ ; $MB_SYSTEMMODAL is 4096 ($iReplacements = 1 ? " was" : "s were") & _ ; Allow for plural or singular grammatically. " made and the new string is:" & _ @CRLF & @CRLF & $sString) ; The RE Pattern:- ; "(?<=\d)," - (Lookbehind assertions) Match an occurrence of a comma, ",", that is preceded by a digit, "\d", but does not include the digit in the match; and, ; ",(?=\d)" - (Lookahead assertions) Matches a comma followed by a digit, "\d", but does not include the digit in the match. ; So, to match a particular comma to convert, there must be a digit on either side of the comma. ; Returns :- ; 1 replacement was made and the new string is: ; ; When a comma is between digits, replace with a point e.g. StringReplace("1.62918,", ",", ".") ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ : Replacement : Comma converted to point.1 point
-
DLL callback application crash with "Variable used without being declared"
oli_the_true_one reacted to TheXman for a topic
When I requested documentation earlier, I was referring to the official EAPI documentation for the version that you are using. It would also help to be able to see the EAPI source code (especially the header files). The documentation that you've provided so far is helpful but it doesn't show the whole picture. It is just the pieces and parts that you think are relevant, but more is needed for trouble shooting external APIs. Without proper documentation, we have to trust that you have interpreted and implemented everything correctly. I would prefer to trust the documentation. I've been searching the web for information on EApiUPSInitDev and can't find anything other than your posts in this forum. Not finding any other information or examples about an API is very odd. Can you provide a link to the official documentation & source?1 point -
DLL callback application crash with "Variable used without being declared"
oli_the_true_one reacted to Danyfirex for a topic
If You're using char don't use _WinAPI_StringLenW Saludos1 point -
So why not get out of the callback ASAP when you haven’t finished with the last one? Func _getIPSAEdata($type, $str) If $boolNewIPSdata = True Then Return ConsoleWrite("1s delay started" & @CRLF) Sleep(1000) If $boolNewIPSdata = False Then $sIPSrawDataReturned = $str $iIPStypeReturned = $type $boolNewIPSdata = True EndIf ConsoleWrite("1s delay ended" & @CRLF) EndFunc ;==>_getIPSAEdata1 point
-
DLL callback application crash with "Variable used without being declared"
oli_the_true_one reacted to Jos for a topic
Add some debugging to your script showing the values of $type & $ptrDataString in Func _getIPSAEdata before calling _WinAPI_StringLenW(). Jos1 point -
DLL callback application crash with "Variable used without being declared"
oli_the_true_one reacted to dmob for a topic
Here's a crazy idea: Copy your script to a new file and retry. I've had weird errors before solved by this...1 point -
DLL callback application crash with "Variable used without being declared"
oli_the_true_one reacted to funkey for a topic
My way trying to solve this would be using a struct/ptr instead of the 'str' for callback function. So you can fill your own allocated char array struct and are maybe faster than with this automatic 65536 chars allocated from AutoIt's 'str'. Now somehow if you want to use the string to late it seems that it is not there anymore, because the DLL changed the pointer to the new string and freed the memory of the old string. This is just a guess.1 point -
1 point