By
mLipok
This is modest beginning for UDF Chilkat component:
https://www.chilkatsoft.com/downloads_ActiveX.asp
Some of AcitveX object bundled into this component (dll file) are Free (you can verify it here), some other are commercial.
You can downolad this UDF here:
; #INDEX# ========================================================================
; Title .........: Chilkat.au3
; AutoIt Version : 3.3.10.2++
; Language ......: English
; Description ...: A collection of Function for use with Chilkat component
; Author ........: mLipok
; Modified ......:
; URL ...........: https://www.chilkatsoft.com/refdoc/activex.asp
; URL ...........: https://www.chilkatsoft.com/downloads_ActiveX.asp
; Date ..........: 2017/02/01
; Version .......: 0.1.1 BETA - Work in progress
; ================================================================================
#cs
2017/02/01
. First official version - mLipok
#ce
http://www.chilkatforum.com/questions/1306/is-the-chilkat-upload-component-freeware
Examples:
#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w 7
;~ #AutoIt3Wrapper_Run_Debug_Mode=Y
#Tidy_Parameters=/sort_funcs /reel
#include <Array.au3>
#include <StringConstants.au3>
#include "Chilkat.au3"
_Example()
Func _Example()
_ErrorLog_ChilkatWrapper(ConsoleWrite)
_Chilkat_StartUp(@ScriptDir & '\ChilkatAx-9.5.0-win32.dll')
_Chilkat_DllVersion($CHILKATOBJ_VERSION_950)
Local $oGLOBAL = _Chilkat_GLOBAL_ObjCreate()
If @error Then MsgBox($MB_ICONERROR, 'GLOBAL Declartion', '@error = ' & @error & @CRLF & '@extended = ' & @extended)
_Chilkat_GLOBAL_UnlockBundle($oGLOBAL, "Anything for 30-day trial")
If @error Then MsgBox($MB_ICONERROR, 'UnlockBundle', '@error = ' & @error & @CRLF & '@extended = ' & @extended)
; Just comment / uncomment one of this followin Examples functions:
;~ _Example_12_JsonObject_PrettyPrint()
;~ _Example_13_JsonObject_IterateMembers()
;~ _Example_14_JsonObject_CreateDocument()
;~ _Example_15_CSV_ColumnNames()
;~ _Example_16_CSV_ToArray()
_Example_17_CSV_ToArray('(?i).*?Pierwszy.*?Urz.*?Skarb.*?', '(?i).*Katowice.*?')
EndFunc ;==>_Example
Func _Example_12_JsonObject_PrettyPrint()
_Log_ChilkatExample('_Example_12_JsonObject_PrettyPrint')
; https://www.example-code.com/vbscript/json_pretty_print.asp
Local $oJSON = _Chilkat_JSON_ObjCreate()
If @error Then Return SetError(@error, @extended, $CHILKAT_RET_FAILURE)
Local $sJSON_String = "{""name"": ""donut"",""image"":{""fname"": ""donut.jpg"",""w"": 200,""h"": 200},""thumbnail"":{""fname"": ""donutThumb.jpg"",""w"": 32,""h"": 32}}"
Local $iSuccess = $oJSON.Load($sJSON_String)
If ($iSuccess <> 1) Then
ConsoleWrite($oJSON.LastErrorText & @CRLF)
Return SetError(@error, @extended, $CHILKAT_RET_FAILURE)
EndIf
; To pretty-print, set the EmitCompact property equal to 0
$oJSON.EmitCompact = 0
; If bare-LF line endings are desired, turn off EmitCrLf
; Otherwise CRLF line endings are emitted.
$oJSON.EmitCrLf = 0
; Emit the formatted JSON:
ConsoleWrite($oJSON.Emit() & @CRLF)
EndFunc ;==>_Example_12_JsonObject_PrettyPrint
Func _Example_13_JsonObject_IterateMembers()
_Log_ChilkatExample('_Example_13_JsonObject_IterateMembers')
; https://www.example-code.com/vbscript/json_iterate_members.asp
Local $oJSON = _Chilkat_JSON_ObjCreate()
If @error Then Return SetError(@error, @extended, $CHILKAT_RET_FAILURE)
Local $sJSON_String = "{ ""id"": 1, ""name"": ""A green door"", ""tags"": [""home"", ""green""], ""price"": 125 }"
Local $iSuccess = $oJSON.Load($sJSON_String)
If ($iSuccess <> 1) Then
ConsoleWrite($oJSON.LastErrorText & @CRLF)
Return SetError($CHILKAT_ERR_LOAD, @extended, $CHILKAT_RET_FAILURE)
EndIf
Local $sName = '', $sValue = ''
Local $iNumMembers = $oJSON.Size, $iValue = 0
For $iMember_idx = 0 To $iNumMembers - 1
$sName = $oJSON.NameAt($iMember_idx)
$sValue = $oJSON.StringAt($iMember_idx)
ConsoleWrite($sName & ": " & $sValue & @CRLF)
$iValue = $oJSON.IntAt($iMember_idx)
ConsoleWrite($sName & " as integer: " & $iValue & @CRLF)
Next
EndFunc ;==>_Example_13_JsonObject_IterateMembers
Func _Example_14_JsonObject_CreateDocument()
_Log_ChilkatExample('_Example_14_JsonObject_CreateDocument')
; https://www.example-code.com/vbscript/create_json.asp
Local $oJSON = _Chilkat_JSON_ObjCreate()
If @error Then Return SetError(@error, @extended, $CHILKAT_RET_FAILURE)
Local $iSuccess
$iSuccess = $oJSON.AddStringAt(-1, "Title", "Pan's Labyrinth")
ConsoleWrite("- $iSuccess=" & $iSuccess & @CRLF)
$iSuccess = $oJSON.AddStringAt(-1, "Director", "Guillermo del Toro")
ConsoleWrite("- $iSuccess=" & $iSuccess & @CRLF)
$iSuccess = $oJSON.AddStringAt(-1, "Original_Title", "El laberinto del fauno")
ConsoleWrite("- $iSuccess=" & $iSuccess & @CRLF)
$iSuccess = $oJSON.AddIntAt(-1, "Year_Released", 2006)
ConsoleWrite("- $iSuccess=" & $iSuccess & @CRLF)
$oJSON.EmitCompact = 0
ConsoleWrite($oJSON.Emit() & @CRLF)
EndFunc ;==>_Example_14_JsonObject_CreateDocument
Func _Example_15_CSV_ColumnNames()
_Log_ChilkatExample('_Example_15_CSV_ColumnNames')
; https://www.example-code.com/vbscript/csv_columnNames.asp
Local $sURL = 'http://www.chilkatsoft.com/testData/sample.csv'
InetGet($sURL, @ScriptDir & '\sample.csv')
Local $oCSV = _Chilkat_CSV_ObjCreate()
If @error Then Return SetError(@error, @extended, $CHILKAT_RET_FAILURE)
; Prior to loading the CSV file, indicate that the 1st row
; should be treated as column names:
$oCSV.HasColumnNames = 1
; Load the $oCSV records from the file:
Local $iSuccess = $oCSV.LoadFile(@ScriptDir & "\sample.csv")
If ($iSuccess <> 1) Then
ConsoleWrite($oCSV.LastErrorText & @CRLF)
Return SetError($CHILKAT_ERR_LOADFILE, @extended, $CHILKAT_RET_FAILURE)
EndIf
Local $iIndex = 0
Local $sColName = ''
; Display the column names:
For $iCol_idx = 0 To $oCSV.NumColumns - 1
$sColName = $oCSV.GetColumnName($iCol_idx)
ConsoleWrite($iCol_idx & ": " & $sColName & @CRLF)
; The following line demonstrates to to get the column
; index given a column name:
$iIndex = $oCSV.GetIndex($sColName)
ConsoleWrite($sColName & " is at column index " & $iIndex & @CRLF)
Next
EndFunc ;==>_Example_15_CSV_ColumnNames
Func _Example_16_CSV_ToArray()
_Log_ChilkatExample('_Example_16_CSV_ToArray')
Local $sURL = 'http://www.chilkatsoft.com/testData/sample.csv'
InetGet($sURL, @ScriptDir & '\sample.csv')
Local $oCSV = _Chilkat_CSV_ObjCreate()
If @error Then Return SetError(@error, @extended, $CHILKAT_RET_FAILURE)
; Prior to loading the CSV file, indicate that the 1st row
; should be treated as column names:
$oCSV.HasColumnNames = 1
; Load the $oCSV records from the file:
Local $iSuccess = $oCSV.LoadFile(@ScriptDir & "\sample.csv")
If ($iSuccess <> 1) Then
ConsoleWrite($oCSV.LastErrorText & @CRLF)
Return SetError($CHILKAT_ERR_LOADFILE, @extended, $CHILKAT_RET_FAILURE)
EndIf
Local $iNumColumns = $oCSV.NumColumns
Local $iNumRows = $oCSV.NumRows
Local $aResult[$iNumRows + 1][$iNumColumns]
; First get the column names
For $iCol_idx = 0 To $iNumColumns - 1
$aResult[0][$iCol_idx] = $oCSV.GetColumnName($iCol_idx)
Next
For $iRow_idx = 0 To $iNumRows - 1
For $iCol_idx = 0 To $iNumColumns - 1
$aResult[$iRow_idx + 1][$iCol_idx] = $oCSV.GetCell($iRow_idx, $iCol_idx)
Next
Next
_ArrayDisplay($aResult, '$aResult')
EndFunc ;==>_Example_16_CSV_ToArray
Func _Example_17_CSV_ToArray($sName_RegExpPattern, $sCity_RegExpPattern)
_Log_ChilkatExample('_Example_16_CSV_ToArray')
; https://www.example-code.com/vbscript/csv_columnNames.asp
Local $sURL = 'https://epuap.gov.pl/wps/wcm/connect/61e062b9-d981-4526-9f63-c2569263775a/RESP_2016-10-07.csv?MOD=AJPERES'
InetGet($sURL, @ScriptDir & '\ePUAP.csv')
ConsoleWrite("- Download completed" & @CRLF)
Local $oCSV = _Chilkat_CSV_ObjCreate()
If @error Then Return SetError(@error, @extended, $CHILKAT_RET_FAILURE)
; Prior to loading the CSV file, indicate that the 1st row
; should be treated as column names:
$oCSV.HasColumnNames = 1
; Load the $oCSV records from the file:
Local $sCSVContent = FileRead(@ScriptDir & "\ePUAP.csv")
ConsoleWrite("- Load File completed" & @CRLF)
Local $iSuccess = $oCSV.LoadFromString($sCSVContent)
If ($iSuccess <> 1) Then
ConsoleWrite($oCSV.LastErrorText & @CRLF)
Return SetError($CHILKAT_ERR_LOADFILE, @extended, $CHILKAT_RET_FAILURE)
EndIf
ConsoleWrite("- LoadFromString completed" & @CRLF)
Local $iNumColumns = $oCSV.NumColumns
Local $iNumRows = $oCSV.NumRows
Local $aResult[$iNumRows + 1][$iNumColumns]
; First get the column names
For $iCol_idx = 0 To $iNumColumns - 1
$aResult[0][$iCol_idx] = $oCSV.GetColumnName($iCol_idx)
Next
Local $iResult_RowCount = 1 ; First is ColumnName
For $iRow_idx = 0 To $iNumRows - 1
If _
StringRegExp($oCSV.GetCell($iRow_idx, 0), $sName_RegExpPattern, $STR_REGEXPMATCH) _
And _
StringRegExp($oCSV.GetCell($iRow_idx, 4), $sCity_RegExpPattern, $STR_REGEXPMATCH) _
Then
For $iCol_idx = 0 To $iNumColumns - 1
$aResult[$iResult_RowCount][$iCol_idx] = $oCSV.GetCell($iRow_idx, $iCol_idx)
Next
$iResult_RowCount += 1
EndIf
Next
; strip array size to Number of founds rows
ReDim $aResult[$iResult_RowCount][$iNumColumns]
ConsoleWrite("- Parsing completed" & @CRLF)
_ArrayDisplay($aResult, '$aResult')
EndFunc ;==>_Example_17_CSV_ToArray
Func _Log_ChilkatExample($sData)
ConsoleWrite('>+ ' & $sData & @CRLF)
EndFunc ;==>_Log_ChilkatExample
REMARK:
This UDF is a continuation of this thread: