- Сообщения
- 3,557
- Репутация
- 628
- Версия AutoIt
- 3.3.12.0
- Версия
- 1
AutoIt: 3.3.12.0
Категория: База данных
Описание: Создание базы документов. Документы в базе не кодированы и не сжаты
Функции предназначены для создания базы документов и работы с ними: запись, редактирование, удаление. Не путать с архиватором.
Примеры
Создание базы:
Работа с базой:
Исходник
В архиве варианты UDF
DB_33120 - AutoIT 3.3.12.0
DB_33140 - Autoit 3.3.14.0
DBSD_33140 - Autoit 3.3.14.0 (используется Scripting.Dictionary)
Источник: autoit-script.ru
Автор(ы): joiner
Категория: База данных
Описание: Создание базы документов. Документы в базе не кодированы и не сжаты
Функции предназначены для создания базы документов и работы с ними: запись, редактирование, удаление. Не путать с архиватором.
Примеры
Создание базы:
Код:
#include <DB.au3>
#include <File.au3>
$files = _FileListToArrayRec('C:\Script', '*.au3', 1, 1, 0, 2)
$PathBase = 'D:\base.txt'
Local $aArrayPoint = _LoadBase($PathBase, 0)
For $i = 1 To $files[0]
$fr = FileRead($files[$i])
$name = StringRegExpReplace($files[$i], '^(?:.*\\)([^\\]*?)(?:\.[^.]+)?$', '\1')
_WriteDoc($aArrayPoint[0], $aArrayPoint[1], $PathBase, $name, $fr)
Next
Работа с базой:
Код:
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <GUIConstantsEx.au3>
#include <DB.au3>
Local $PathBase = 'D:\base.txt'
Global $datadocinit, $text, $fr, $datadoc = '', $datalistw, $indexlist = ''
Global $Form1 = GUICreate("Form1", 901, 438, 192, 124)
Global $ListView1 = GUICtrlCreateListView("", 8, 8, 410, 422, $LVS_SHOWSELALWAYS, BitOR($LVS_EX_GRIDLINES, $LVS_EX_DOUBLEBUFFER, $LVS_EX_FULLROWSELECT))
_GUICtrlListView_AddColumn($ListView1, "Список документов", 300)
Global $Edit1 = GUICtrlCreateEdit('', 432, 8, 457, 225)
Global $Input1 = GUICtrlCreateInput("", 432, 248, 457, 21)
$Button1 = GUICtrlCreateButton("Создать", 432, 280, 75, 25);записываем новый документ
$Button2 = GUICtrlCreateButton("Изменить", 632, 280, 75, 25);изменяем документ
$Button3 = GUICtrlCreateButton("Удалить", 816, 280, 75, 25)
GUISetState(@SW_SHOW)
Local $aArrayPoint = _LoadBase($PathBase);загрузить весь список имен
;----------Пример загрузки базы по имени документа------------------------------
;Local $aArrayPoint = _LoadBase($PathBase,'имя',1,1);полное совпадение
;Local $aArrayPoint = _LoadBase($PathBase,'имя',1,0);частичное совпадение
;описание параметров поиска смотри в описании функции _LoadDocsList()
;-------------------------------------------------------------------------------
If IsArray($aArrayPoint[0]) Then
For $i = 0 To UBound($aArrayPoint[0]) - 1
_GUICtrlListView_AddItem($ListView1, ($aArrayPoint[0])[$i][0])
Next
EndIf
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
While 1
If $fr Then
$fr = 0
$datadocinit = _ReadDoc($aArrayPoint[0], $text, $PathBase)
If IsArray($datadocinit) Then
GUICtrlSetData($Input1, $text)
For $i = 0 To UBound($datadocinit) - 1
$datadoc &= $datadocinit[$i][0]
Next
GUICtrlSetData($Edit1, $datadoc)
$datadoc = ''
EndIf
EndIf
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$readname = GUICtrlRead($Input1)
$readtext = GUICtrlRead($Edit1)
If Not _WriteDoc($aArrayPoint[0], $aArrayPoint[1], $PathBase, $readname, $readtext) Then
GUICtrlSetData($Edit1, '')
GUICtrlSetData($Input1, '')
_GUICtrlListView_AddItem($ListView1, ($aArrayPoint[0])[UBound($aArrayPoint[0]) - 1][0])
EndIf
Case $Button2
$newname = GUICtrlRead($Input1)
$newdata = GUICtrlRead($Edit1)
If Not _EditDoc($aArrayPoint[0], $datadocinit, $PathBase, $newname, $newdata) Then
_GUICtrlListView_SetItemText($ListView1, $indexlist, $datadocinit[0][3])
EndIf
Case $Button3
If Not _RemoveDoc($aArrayPoint[0], $datadocinit, $PathBase) Then
_GUICtrlListView_DeleteItem($ListView1, $indexlist)
GUICtrlSetData($Edit1, '')
GUICtrlSetData($Input1, '')
EndIf
EndSwitch
WEnd
Func WM_NOTIFY($hWnd, $imsg, $wParam, $lParam)
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $tInfo
$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $iIDFrom
Case $ListView1
Switch $iCode
Case $NM_DBLCLK
$tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
$indexlist = DllStructGetData($tInfo, "Index")
$text = _GUICtrlListView_GetItemText($ListView1, $indexlist, 0)
$fr = 1
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
Исходник
В архиве варианты UDF
DB_33120 - AutoIT 3.3.12.0
DB_33140 - Autoit 3.3.14.0
DBSD_33140 - Autoit 3.3.14.0 (используется Scripting.Dictionary)
Источник: autoit-script.ru
Автор(ы): joiner
- Автор
- joiner
Вложения
Последнее редактирование: