1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. BugFix

Beiträge von BugFix

  • Rechner

    • BugFix
    • 18. Dezember 2015 um 10:57
    Zitat von Michl

    da möchte ich gerne mit kommastellen divitieren können was leider nicht funktioniert.

    Klar geht das. Ich vermute dass du deine Werte mit Komma eingibst. Das ist computertechnisch natürlich falsch, hier ist der Dezimaltrenner ein Punkt.
    Also entweder im Input mit Punkt eingeben oder beim Auslesen des Inputs Komma durch Punkt ersetzen.

  • Comboboxproblematik

    • BugFix
    • 18. Dezember 2015 um 09:22

    Da empfiehlt sich der OnEvent-Mode. Lege globale Variablen an, in denen du den aktiven Inhalt einer jeden Combo speicherst. Du ordnest dann den Combos eine Funktion zu (z.B. _CheckCombos ). Das Makro @GUI_CtrlID liefert dir die ID der Combo, welche gerade benutzt wurde. Nun kannst du den Inhalt in die zugehörige Variable einlesen. Dann folgen deine Vergleichsoperationen. (wenn Combo1=* dann Disable Combo2 sonst Enable Combo2, usw. usf.)

    Edit:
    Ich hatte vor ein paar Jahren mal angefangen ein SQLite-Author-Programm zu schreiben. In diese Richtung geht ja auch dein Skript. Ich poste mal das unvollständige Skript. Ist lauffähig aber nicht mit allen Funktionen besetzt.

    AutoIt
    ;-- TIME_STAMP   2013-02-02 22:56:57
    #Include <GuiComboBox.au3>
    #Include <GUIConstantsEx.au3>
    #Include <GuiEdit.au3>
    #Include <GuiListView.au3>
    #Include <GuiTab.au3>
    #Include <GuiTreeView.au3>
    #include <bin2sqlite3_dll.au3>
    #Include <SQLite.au3>
    #Include <WindowsConstants.au3>
    
    
    
    
    
    
    ;~ #include <SQLite.au3> ;
    ;~ #include <SQLite.dll.au3>
    Opt("GUIOnEventMode", 1)
    Opt('MustDeclareVars',1)
    
    
    Global $INI = @ScriptDir & '\SQLite_Author.INI', $currFolder = @MyDocumentsDir, $splitPath, $split
    Global $maxFiles = 9, $currCountFiles = 0, $aRecentFiles[1], $aItemID[1][2] = [[-1,0]]
    Global $aTable[1], $aStruct[1][2] ; [i][0]=Tabelle, [i][1]=Feld
    If Not FileExists($INI) Then
    	IniWrite($INI, 'settings', 'last_folder', @MyDocumentsDir)
    	IniWrite($INI, 'recent_num', 'maximum', 9)
    	IniWrite($INI, 'recent_num', 'aktuell', 0)
    Else
    	$currFolder = IniRead($INI, 'settings', 'last_folder', @MyDocumentsDir)
    	$maxFiles = IniRead($INI, 'recent_num', 'maximum', 9)
    	$currCountFiles = IniRead($INI, 'recent_num', 'aktuell', 0)
    	If $currCountFiles > 0 Then
    		$aRecentFiles = IniReadSection($INI, 'recent_file')
    		ReDim $aItemID[$aRecentFiles[0][0]][2]
    		$aItemID[0][0] = 1
    	EndIf
    EndIf
    Global $GUI_Main, $TreeView1, $aMenuItem[23], $Tab1, $TabSheet1, $TabSheet2, $cbTable, $Label1, $Group1, $Label2, $Label3
    Global $ContextMenu, $EditSQL, $ID_Table, $ID_Field, $openTable
    Global $cbField, $inFilter, $bFilter, $b1st, $bPrev, $bNext, $bLast, $bNew, $bDel, $bEdit, $bSave, $bEscChg, $bUpdate, $ListView1
    Global $CM_ExpandSubs, $CM_CollapseSubs, $tvi_DB, $hStatus, $aParts[2] = [20, -1], $aSelParent[1] = [0], $aEmpty[1] = [0]
    Global $hSQL, $path, $MyDocsFolder = "::{450D8FBA-AD25-11D0-98A8-0800361B1103}"
    Global $aResult, $iRows, $iColumns, $hQuery, $hImage, $a_ID_Table[1]
    
    
    $GUI_Main = GUICreate("SQLite Author", 973, 514, -1, -1, Default, $WS_EX_TOPMOST)
    GUISetOnEvent($GUI_EVENT_CLOSE, "GUIMainClose")
    $TreeView1 = GUICtrlCreateTreeView(8, 8, 241, 455, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE)
    ;~ $ContextMenu = GUICtrlCreateContextMenu($TreeView1)
    ;~ $CM_ExpandSubs = GUICtrlCreateMenuItem('Zweig Ausklappen', $ContextMenu)
    ;~ GUICtrlSetOnEvent(-1, 'CM_ExpandSubs')
    ;~ $CM_CollapseSubs = GUICtrlCreateMenuItem('Zweig Einklappen', $ContextMenu)
    ;~ GUICtrlSetOnEvent(-1, 'CM_CollapseSubs')
    $aMenuItem[0] = GUICtrlCreateMenu("Datenbank")
    $aMenuItem[4] = GUICtrlCreateMenuItem("Neu", $aMenuItem[0])
    GUICtrlSetOnEvent(-1, "MenuItem_DB_New")
    $aMenuItem[5] = GUICtrlCreateMenuItem("Öffnen", $aMenuItem[0])
    GUICtrlSetOnEvent(-1, "MenuItem_DB_Open")
    $aMenuItem[6] = GUICtrlCreateMenuItem("Säubern", $aMenuItem[0])
    GUICtrlSetOnEvent(-1, "MenuItem_DB_Clean")
    $aMenuItem[7] = GUICtrlCreateMenuItem("Schließen", $aMenuItem[0])
    GUICtrlSetOnEvent(-1, "MenuItem_DB_Close")
    GUICtrlCreateMenuItem("", $aMenuItem[0])
    $aMenuItem[22] = GUICtrlCreateMenu("Zuletzt", $aMenuItem[0])
    GUICtrlCreateMenuItem("", $aMenuItem[0])
    $aMenuItem[8] = GUICtrlCreateMenuItem("Beenden", $aMenuItem[0])
    GUICtrlSetOnEvent(-1, "GUIMainClose")
    $aMenuItem[1] = GUICtrlCreateMenu("Tabelle")
    $aMenuItem[9] = GUICtrlCreateMenuItem("Neu", $aMenuItem[1])
    GUICtrlSetOnEvent(-1, "MenuItem_Table_New")
    $aMenuItem[10] = GUICtrlCreateMenuItem("Ändern", $aMenuItem[1])
    GUICtrlSetOnEvent(-1, "MenuItem_Table_Chg")
    $aMenuItem[11] = GUICtrlCreateMenuItem("Löschen", $aMenuItem[1])
    GUICtrlSetOnEvent(-1, "MenuItem_Table_Del")
    $aMenuItem[2] = GUICtrlCreateMenu("Extras")
    $aMenuItem[12] = GUICtrlCreateMenu("Index", $aMenuItem[2])
    $aMenuItem[13] = GUICtrlCreateMenuItem("Neu", $aMenuItem[12])
    GUICtrlSetOnEvent(-1, "MenuItem_Index_New")
    $aMenuItem[14] = GUICtrlCreateMenuItem("Ändern", $aMenuItem[12])
    GUICtrlSetOnEvent(-1, "MenuItem_Index_Chg")
    $aMenuItem[15] = GUICtrlCreateMenuItem("Löschen", $aMenuItem[12])
    GUICtrlSetOnEvent(-1, "MenuItem_Index_Del")
    $aMenuItem[16] = GUICtrlCreateMenu("Trigger", $aMenuItem[2])
    $aMenuItem[17] = GUICtrlCreateMenuItem("Neu", $aMenuItem[16])
    GUICtrlSetOnEvent(-1, "MenuItem_Trigger_New")
    $aMenuItem[18] = GUICtrlCreateMenuItem("Ändern", $aMenuItem[16])
    GUICtrlSetOnEvent(-1, "MenuItem_Trigger_Chg")
    $aMenuItem[19] = GUICtrlCreateMenuItem("Löschen", $aMenuItem[16])
    GUICtrlSetOnEvent(-1, "MenuItem_Trigger_Del")
    $aMenuItem[3] = GUICtrlCreateMenu("Ansicht")
    $aMenuItem[20] = GUICtrlCreateMenuItem("alles Ausklappen", $aMenuItem[3])
    GUICtrlSetOnEvent(-1, "MenuItem_Expand")
    $aMenuItem[21] = GUICtrlCreateMenuItem("alles Einklappen", $aMenuItem[3])
    GUICtrlSetOnEvent(-1, "MenuItem_Collapse")
    Global $WM_NOTIFY_DUMMY = GUICtrlCreateDummy()
    GUICtrlSetOnEvent($WM_NOTIFY_DUMMY, "TreeView1Click")
    
    
    $Tab1 = GUICtrlCreateTab(264, 8, 698, 457)
    GUICtrlSetOnEvent(-1, 'activeSheet')
    $TabSheet1 = GUICtrlCreateTabItem("Daten bearbeiten")
    $cbTable = GUICtrlCreateCombo("", 320, 47, 231, 25)
    GUICtrlSetOnEvent(-1, '_TableChg')
    $Label1 = GUICtrlCreateLabel("Tabelle", 274, 50, 39, 17)
    $Group1 = GUICtrlCreateGroup(" Filtern ", 617, 34, 335, 73)
    $Label2 = GUICtrlCreateLabel("Feld", 625, 51, 24, 17)
    $Label3 = GUICtrlCreateLabel("Ausdruck", 625, 79, 45, 17)
    $cbField = GUICtrlCreateCombo("", 675, 48, 220, 25)
    GUICtrlSetOnEvent(-1, '_FieldChg')
    $inFilter = GUICtrlCreateInput("", 675, 75, 220, 21)
    $bFilter = GUICtrlCreateButton("Filtern", 903, 63, 41, 20, 0)
    GUICtrlSetOnEvent(-1, "bFilterClick")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $b1st = GUICtrlCreateButton("<<", 274, 82, 25, 25, 0)
    GUICtrlSetOnEvent(-1, "b1stClick")
    GUICtrlSetTip(-1, 'Erster DS')
    $bPrev = GUICtrlCreateButton("<", 300, 82, 25, 25, 0)
    GUICtrlSetOnEvent(-1, "bPrevClick")
    GUICtrlSetTip(-1, 'Voriger DS')
    $bNext = GUICtrlCreateButton(">", 326, 82, 25, 25, 0)
    GUICtrlSetOnEvent(-1, "bNextClick")
    GUICtrlSetTip(-1, 'Nächster DS')
    $bLast = GUICtrlCreateButton(">>", 352, 82, 25, 25, 0)
    GUICtrlSetOnEvent(-1, "bLastClick")
    GUICtrlSetTip(-1, 'Letzter DS')
    $bNew = GUICtrlCreateButton("+", 387, 82, 25, 25, 0)
    GUICtrlSetOnEvent(-1, "bNewClick")
    GUICtrlSetTip(-1, 'Neuer DS')
    $bDel = GUICtrlCreateButton("-", 413, 82, 25, 25, 0)
    GUICtrlSetOnEvent(-1, "bDelClick")
    GUICtrlSetTip(-1, 'DS Löschen')
    $bEdit = GUICtrlCreateButton("B", 448, 82, 25, 25, 0)
    GUICtrlSetOnEvent(-1, "bEditClick")
    GUICtrlSetTip(-1, 'DS Bearbeiten')
    $bSave = GUICtrlCreateButton("S", 474, 82, 25, 25, 0)
    GUICtrlSetOnEvent(-1, "bSaveClick")
    GUICtrlSetTip(-1, 'DS Speichern')
    $bEscChg = GUICtrlCreateButton("V", 500, 82, 25, 25, 0)
    GUICtrlSetOnEvent(-1, "bEscChgClick")
    GUICtrlSetTip(-1, 'Änderungen Verwerfen')
    $bUpdate = GUICtrlCreateButton("A", 526, 82, 25, 25, 0)
    GUICtrlSetOnEvent(-1, "bUpdateClick")
    GUICtrlSetTip(-1, 'Aktualisieren')
    $ListView1 = GUICtrlCreateListView("", 272, 112, 680, 345, $LVS_REPORT, $LVS_EX_GRIDLINES)
    GUICtrlSetOnEvent(-1, "ListView1Click")
    $TabSheet2 = GUICtrlCreateTabItem("SQL")
    $EditSQL = GUICtrlCreateEdit('', 272, 112, 680, 345)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlCreateTabItem("")
    $hStatus = _GUICtrlStatusBar_Create($GUI_Main, $aParts)
    _GUICtrlStatusBar_SetBkColor($hStatus, 0xE6E0B0)  ; Color als BGR
    
    
    $hImage = _GUIImageList_Create(16, 16, 5, 3)
    _GUIImageList_AddIcon($hImage, "shell32.dll", 186) ; Datenbank
    _GUIImageList_AddIcon($hImage, "shell32.dll", 98)  ; Tabelle allg.
    _GUIImageList_AddIcon($hImage, "shell32.dll", 96)  ; TabellenNamen
    _GUIImageList_AddIcon($hImage, "shell32.dll", 36)  ; FelderOrdner
    _GUIImageList_AddIcon($hImage, "shell32.dll", 24)  ; Felder
    _GUIImageList_AddIcon($hImage, "shell32.dll", 104) ; IndexOrdner
    _GUIImageList_AddIcon($hImage, "shell32.dll", 44)  ; Indizes
    _GUIImageList_AddIcon($hImage, "shell32.dll", 125) ; TriggerOrdner
    _GUIImageList_AddIcon($hImage, "shell32.dll", 65)  ; Trigger
    _GUICtrlTreeView_SetNormalImageList($TreeView1, $hImage)
    
    
    _DisableItems('1,2,3,6,7')
    If $currCountFiles = 0 Then GUICtrlSetState($aMenuItem[22], $GUI_DISABLE)
    GUISetState(@SW_SHOW, $GUI_Main)
    
    
    _GUICtrlStatusBar_SetIcon ($hStatus, 0, 47, "shell32.dll")
    _GUICtrlStatusBar_SetText ($hStatus, ">> Keine Datenbank geöffnet <<", 1) ; _MemInit
    
    
    _SQLite_Startup()
    If @error Then Exit MsgBox(262192, 'Fehler', 'SQLite.DLL konnte nicht initialisiert werden!')
    
    
    If $aItemID[0][0] <> -1 Then
    	_Array2DDelete($aRecentFiles, 0)
    	For $i = 0 To UBound($aRecentFiles) -1
    		$split = _StringSplitOnce($aRecentFiles[$i][1], '\', -1)
    		$aItemID[$i][0] = GUICtrlCreateMenuItem($split[1], $aMenuItem[22])
    		GUICtrlSetOnEvent(-1, '_itemClick')
    		$aItemID[$i][1] = $i
    	Next
    EndIf
    
    
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    
    
    While 1
    	Sleep(100)
    WEnd
    
    
    Func GUIMainClose()
    	IniWrite($INI, 'settings', 'last_folder', $currFolder)
    	If $hSQL > 0 Then _SQLite_Close($hSQL)
    	_SQLite_Shutdown()
    	Exit
    EndFunc
    
    
    Func MenuItem_DB_New()
    	GUISetState(@SW_HIDE, $GUI_Main)
    	$path = FileSaveDialog( "Bitte einen Dateinamen festlegen.", $MyDocsFolder, "SQLite-DB (*.db)", 2)
    	If @error Then Return MsgBox(262192, 'Achtung', 'Kein Dateiname festgelegt!')
    	If StringRight($path, 3) <> '.db' Then $path &= '.db'
    	If $hSQL > 0 Then _SQLite_Close($hSQL) ; evtl. offene DB schließen
    	GUICtrlSetData($EditSQL, '')
    	_GUICtrlTreeView_DeleteAll($TreeView1)
    	_GUICtrlStatusBar_SetIcon ($hStatus, 0, 47, "shell32.dll")
    	_GUICtrlStatusBar_SetText ($hStatus, ">> Keine Datenbank geöffnet <<", 1)
    	GUISetState(@SW_SHOW, $GUI_Main)
    	If Not StringRight($path, 3) = '.db' Then $path &= '.db'
    	If $currCountFiles < $maxFiles Then ReDim $aMenuItem[UBound($aMenuItem)+1]
    	_RecentFiles($INI, $aRecentFiles, $path, $currCountFiles, $maxFiles, 0)
    	ReDim $aItemID[UBound($aRecentFiles)][2]
    	_ResetRecentFiles()
    	$hSQL = _SQLite_Open($path)
    	_EnableItems('3,6,7')
    EndFunc
    
    
    Func MenuItem_DB_Open()
    	_OpenDB()
    EndFunc
    
    
    Func _OpenDB($path = -1)
    	If $path = -1 Then
    		GUISetState(@SW_HIDE, $GUI_Main)
    		$path = FileOpenDialog('Bitte Datenbank auswählen', $currFolder, "SQLite-DB (*.db)", 3)
    		If @error Then Return MsgBox(262192, 'Achtung', 'Keine Datenbank gewählt!')
    		GUISetState(@SW_SHOW, $GUI_Main)
    	EndIf
    	If $hSQL > 0 Then
    		_SQLite_Close($hSQL) ; evtl. offene DB schließen
    		_clear()
    	EndIf
    	GUICtrlSetData($EditSQL, '')
    	_GUICtrlTreeView_DeleteAll($TreeView1)
    	_GUICtrlStatusBar_SetIcon ($hStatus, 0, 47, "shell32.dll")
    	_GUICtrlStatusBar_SetText ($hStatus, ">> Keine Datenbank geöffnet <<", 1)
    	$splitPath = _StringSplitOnce($path, '\', -1)
    	If Not @error Then
    		$currFolder = $splitPath[0]
    		_GUICtrlTreeView_BeginUpdate($TreeView1)
    		$tvi_DB = _GUICtrlTreeView_Add($TreeView1, 0, StringUpper(StringTrimRight($splitPath[1], 3)), 0, 0)
    		_GUICtrlTreeView_SetBold($TreeView1, $tvi_DB)
    		_GUICtrlTreeView_EndUpdate($TreeView1)
    	EndIf
    	$hSQL = _SQLite_Open($path)
    	If @error Then
    		Return MsgBox(262192, 'Achtung', 'Datenbank konnte nicht geöffnet werden!')
    		_GUICtrlTreeView_DeleteAll($TreeView1)
    	Else
    		If $currCountFiles < $maxFiles Then ReDim $aMenuItem[UBound($aMenuItem)+1]
    		_RecentFiles($INI, $aRecentFiles, $path, $currCountFiles, $maxFiles, 0)
    		ReDim $aItemID[UBound($aRecentFiles)][2]
    		_ResetRecentFiles()
    		_LoadTreeView()
    		_TableChg()
    		_EnableItems('3,6,7')
    		_GUICtrlStatusBar_SetIcon ($hStatus, 0, 13, "shell32.dll")
    		_GUICtrlStatusBar_SetText ($hStatus, "Geöffnete Datenbank:   " & $path, 1)
    	EndIf
    EndFunc
    
    
    Func _itemClick()
    	Local $index = _ArraySearch($aItemID, @GUI_CtrlId, 0, 0, 0, 0, 1, 0)
    	_OpenDB($aRecentFiles[$index][1])
    EndFunc
    
    
    Func _ResetRecentFiles()
    	For $i = 0 To UBound($aItemID) -1
    		GUICtrlDelete($aItemID[$i][0])
    	Next
    	For $i = 0 To UBound($aRecentFiles) -1
    		$split = _StringSplitOnce($aRecentFiles[$i][1], '\', -1)
    		$aItemID[$i][0] = GUICtrlCreateMenuItem($split[1], $aMenuItem[22])
    		GUICtrlSetOnEvent(-1, '_itemClick')
    		$aItemID[$i][1] = $i
    	Next
    EndFunc
    
    
    Func MenuItem_DB_Clean()
    	Local $sExec = ''
    	If _SQLite_GetTable($hSQL, "SELECT tbl_name FROM sqlite_master WHERE type='table';", $aResult, $iRows, $iColumns) _
    		<> $SQLITE_OK Then Return MsgBox(262192, 'Fehler', 'DB enthält keine Tabelle zum Bereinigen!')
    	For $i = 2 To UBound($aResult) -1
    		$sExec &= "VACUUM " & $aResult[$i] & ";"
    	Next
    	If _SQLite_Exec($hSQL, $sExec) = $SQLITE_OK Then
    		MsgBox(262208, "Säuberung", "Die Datenbank wurde erfolgreich bereinigt.")
    	Else
    		MsgBox(262192, "Säuberung", "Bei der Bereinigung ist ein Fehler aufgetreten.")
    	EndIf
    EndFunc
    
    
    Func MenuItem_DB_Close()
    	_clear()
    	If $hSQL > 0 Then _SQLite_Close($hSQL)
    	_GUICtrlStatusBar_SetIcon ($hStatus, 0, 47, "shell32.dll")
    	_GUICtrlStatusBar_SetText ($hStatus, ">> Keine Datenbank geöffnet <<", 1)
    	_DisableItems('1,2,3,6,7')
    EndFunc
    
    
    Func _clear()
    	GUISetState(@SW_LOCK, $GUI_Main)
    	GUICtrlDelete($ListView1)
    	$ListView1 = GUICtrlCreateListView("", 272, 112, 680, 345, $LVS_REPORT, $LVS_EX_GRIDLINES)
    	GUICtrlSetData($EditSQL, '')
    	ReDim $aTable[1]
    	$aTable[0] = ''
    	ReDim $aStruct[1][2]
    	$aStruct[0][0] = ''
    	_GUICtrlTreeView_DeleteAll($TreeView1)
    	_GUICtrlComboBox_ResetContent($cbTable)
    	_GUICtrlComboBox_ResetContent($cbField)
    	GUISetState(@SW_UNLOCK, $GUI_Main)
    EndFunc
    
    
    Func activeSheet()
    	Switch _GUICtrlTab_GetCurSel($Tab1)
    		Case 0
    			GUICtrlSetState($ListView1, $GUI_ENABLE)
    			GUICtrlSetState($EditSQL, $GUI_DISABLE)
    		Case 1
    			GUICtrlSetState($ListView1, $GUI_DISABLE)
    			GUICtrlSetState($EditSQL, $GUI_ENABLE)
    	EndSwitch
    EndFunc
    
    
    Func MenuItem_Table_New()
    	; Einblenden GUI_Table
    	MsgBox(262192, 'Table_New', 'noch nicht besetzt')
    EndFunc
    
    
    Func MenuItem_Table_Chg()
    	; Einblenden GUI_Table mit Tabellenauswahl
    	MsgBox(262192, 'Table_Chg', 'noch nicht besetzt')
    EndFunc
    
    
    Func MenuItem_Table_Del()
    	; Einblenden GUI_Table mit Tabellenauswahl
    	MsgBox(262192, 'Table_Del', 'noch nicht besetzt')
    EndFunc
    
    
    Func MenuItem_Index_New()
    	; Einblenden GUI_Index mit Tabellenauswahl, Feldliste, Indextypauswahl
    	MsgBox(262192, 'Index_New', 'noch nicht besetzt')
    EndFunc
    
    
    Func MenuItem_Index_Chg()
    	; Einblenden GUI_Index mit Indexauswahl, Indextypauswahl
    	MsgBox(262192, 'Index_Chg', 'noch nicht besetzt')
    EndFunc
    
    
    Func MenuItem_Index_Del()
    	; Einblenden GUI_Index mit Indexauswahl
    	MsgBox(262192, 'Index_Del', 'noch nicht besetzt')
    EndFunc
    
    
    Func MenuItem_Trigger_New()
    	; Einblenden GUI_Trigger m. allen Optionen
    	MsgBox(262192, 'Trigger_New', 'noch nicht besetzt')
    EndFunc
    
    
    Func MenuItem_Trigger_Chg()
    	; Einblenden GUI_Trigger mit Triggerauswahl, Editierfeld
    	MsgBox(262192, 'Trigger_Chg', 'noch nicht besetzt')
    EndFunc
    
    
    Func MenuItem_Trigger_Del()
    	; Einblenden GUI_Trigger mit Triggerauswahl
    	MsgBox(262192, 'Trigger_Del', 'noch nicht besetzt')
    EndFunc
    ; Beschreibung Triggererstellung am Ende
    
    
    Func MenuItem_Expand()
    	_GUICtrlTreeView_Expand($TreeView1)
    EndFunc
    
    
    Func MenuItem_Collapse()
    	_GUICtrlTreeView_Expand($TreeView1, 0, False)
    EndFunc
    
    
    Func CM_ExpandSubs()
    	Local $hCurrentItem = _GUICtrlTreeView_GetSelection($TreeView1)
    	If $hCurrentItem = 0 Then Return
    	_GUICtrlTreeView_Expand($TreeView1, $hCurrentItem)
    EndFunc
    
    
    Func CM_CollapseSubs()
    	Local $hCurrentItem = _GUICtrlTreeView_GetSelection($TreeView1)
    	If $hCurrentItem = 0 Then Return
    	_GUICtrlTreeView_Expand($TreeView1, $hCurrentItem, False)
    EndFunc
    
    
    Func _GUICtrlTreeView_ExpandOneLevel($hTreeView, $hParentItem=0)
    	If $hParentItem < 1 Then
    		Local $hCurrentItem = _GUICtrlTreeView_GetFirstItem($hTreeView)
    	Else
    		Local $hCurrentItem = $hParentItem
    	EndIf
    	If $hCurrentItem = 0 Then Return SetError(1)
    	Local $hChild
    	Local $countChild = _GUICtrlTreeView_GetChildCount($hTreeView, $hCurrentItem)
    	If $countChild = 0 Then Return SetError(2)
    	_GUICtrlTreeView_Expand($hTreeView, $hCurrentItem)
    	For $i = 1 To $countChild
    		If $i = 1 Then
    			$hChild = _GUICtrlTreeView_GetFirstChild($hTreeView, $hCurrentItem)
    		Else
    			$hChild = _GUICtrlTreeView_GetNextSibling($hTreeView, $hChild)
    		EndIf
    		If _GUICtrlTreeView_GetChildren($hTreeView, $hChild) Then _GUICtrlTreeView_Expand($hTreeView, $hChild, False)
    	Next
    EndFunc  ;==>_GUICtrlTreeView_ExpandOneLevel
    
    
    Func b1stClick()
    
    
    EndFunc
    
    
    Func bPrevClick()
    
    
    EndFunc
    
    
    Func bNextClick()
    
    
    EndFunc
    
    
    Func bLastClick()
    
    
    EndFunc
    
    
    Func bNewClick()
    
    
    EndFunc
    
    
    Func bDelClick()
    
    
    EndFunc
    
    
    Func bEditClick()
    
    
    EndFunc
    
    
    Func bSaveClick()
    
    
    EndFunc
    
    
    Func bEscChgClick()
    
    
    EndFunc
    
    
    Func bUpdateClick()
    
    
    EndFunc
    
    
    Func bFilterClick()
    
    
    EndFunc
    
    
    Func TreeView1Click()
    	Local $ItemText, $index, $hTVItem = _GUICtrlTreeView_GetSelection($TreeView1)
    	If _GUICtrlTreeView_GetParentHandle($TreeView1, $hTVItem) = $ID_Table Then
    		$ItemText = _GUICtrlTreeView_GetText($TreeView1, $hTVItem)
    		$index = _GUICtrlComboBox_FindStringExact($cbTable, $ItemText)
    		_GUICtrlComboBox_SetCurSel($cbTable, $index)
    		_SetFields()
    		ExpandOnlyTable($hTVItem)
    	ElseIf _GUICtrlTreeView_GetText($TreeView1, _GUICtrlTreeView_GetParentHandle($TreeView1, $hTVItem)) = 'Felder' Then
    		$ItemText = _GUICtrlTreeView_GetText($TreeView1, $hTVItem)
    		$index = _GUICtrlComboBox_FindStringExact($cbField, $ItemText)
    		_GUICtrlComboBox_SetCurSel($cbField, $index)
    		_GUICtrlListView_SetSelectedColumn($ListView1, $index)
    	EndIf
    EndFunc
    
    
    Func _selTVItem($text)  ; ##### Item markieren bei Spaltenklick und bei Feldwechsel in Combo
    	Local $ItemText, $hNext = $openTable
    ;~ 	$hNext = _GUICtrlTreeView_GetNextChild($ListView1, $hNext)
    ;~ 	Do
    ;~ 		$hNext = _GUICtrlTreeView_GetNextSibling($ListView1, $hNext)
    ;~ 		$ItemText = _GUICtrlTreeView_GetText($TreeView1, $hNext)
    ;~ ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $ItemText = ' & $ItemText & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    ;~ 		If $ItemText = $text Then ExitLoop
    ;~ 	Until $hNext = 0
    ;~ ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $hField = ' & $hField & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    ;~ 	$hField = _GUICtrlTreeView_GetNextChild($ListView1, $hField)
    ;~ ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $hField = ' & $hField & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    ;~ 	Local $t = TimerInit()
    ;~ 	Do
    ;~ 		$ItemText = _GUICtrlTreeView_GetText($TreeView1, $hNext)
    ;~ 		ConsoleWrite('$ItemText = ' & $ItemText & @crlf) ;### Debug Console
    ;~ 		If $ItemText = $text Then
    ;~ 			_GUICtrlTreeView_SetSelected($TreeView1, $hField)
    ;~ 			Return
    ;~ 		Else
    ;~ 			$hField = _GUICtrlTreeView_GetNextSibling($TreeView1, $hField)
    ;~ 		EndIf
    ;~ 	Until @error Or TimerDiff($t) > 4000
    EndFunc
    
    
    Func ExpandOnlyTable($hItem)
    	For $i = 0 To UBound($a_ID_Table) -1
    		If $a_ID_Table[$i] = $hItem Then
    			_GUICtrlTreeView_Expand($TreeView1, $hItem)
    		Else
    			_GUICtrlTreeView_Expand($TreeView1, $a_ID_Table[$i], False)
    		EndIf
    	Next
    	$openTable = $hItem
    EndFunc
    
    
    Func ListView1Click()
    
    
    EndFunc
    
    
    Func _FillListView1($ARRAY)
    	GUISetState(@SW_LOCK)
    	GUICtrlDelete($ListView1)
    	Local $Header = '', $ub2nd = UBound($ARRAY, 2), $colWidth = 60
    	If $ub2nd > 1 Then
    		If 680/$ub2nd > 60 Then $colWidth = Int(680/$ub2nd)
    		For $j = 0 To $ub2nd -1  ; Header
    			$Header &= $ARRAY[0][$j] & '|'
    		Next
    	Else
    		If 680/UBound($ARRAY) > 60 Then $colWidth = Int(680/UBound($ARRAY))
    		For $i = 0 To UBound($ARRAY) -1
    			$Header &= $ARRAY[$i] & '|'
    		Next
    	EndIf
    	$Header = StringTrimRight($Header, 1)
    	$ListView1 = GUICtrlCreateListView($Header, 272, 112, 680, 345, $LVS_REPORT, BitOR($LVS_EX_GRIDLINES,$LVS_EX_FULLROWSELECT))
    	For $i = 0 To UBound($ARRAY, 2) -2
    		GUICtrlSendMsg($ListView1, 0x101E, $i, $colWidth)
    	Next
    	GUICtrlSendMsg(-1, 0x101E, UBound($ARRAY, 2)-1, $LVSCW_AUTOSIZE_USEHEADER)
    	Local $item = ''
    	For $i = 1 To UBound($ARRAY) -1
    		For $k = 0 To UBound($ARRAY, 2) -1
    			$item &= $ARRAY[$i][$k] & '|'
    		Next
    		GUICtrlCreateListViewItem($item, $ListView1)
    		$item = ''
    	Next
    	GUISetState(@SW_UNLOCK)
    	_GUICtrlStatusBar_SetIcon ($hStatus, 0, 13, "shell32.dll")
    EndFunc
    
    
    Func _SelAllFromTable()
    	Local $aSelect
    	If _SQLite_GetTable2d($hSQL, "SELECT * FROM " & GUICtrlRead($cbTable) & ";", $aSelect, $iRows, $iColumns) = $SQLITE_OK Then
    		If Not IsArray($aSelect) Then  ; leere Tabelle
    			Local $aSelect[1]
    			For $i = 0 To UBound($aStruct) -1
    				If $aStruct[$i][0] = GUICtrlRead($cbTable) Then
    					If $aSelect[UBound($aSelect)-1] <> '' Then ReDim $aSelect[UBound($aSelect)+1]
    					$aSelect[UBound($aSelect)-1] = $aStruct[$i][1]
    				EndIf
    			Next
    		EndIf
    		_FillListView1($aSelect)
    	EndIf
    EndFunc
    
    
    Func _DisableItems($sITEM)
    	Local $var = StringSplit($sITEM, ',')
    	For $i = 1 To UBound($var) -1
    		GUICtrlSetState($aMenuItem[$var[$i]], $GUI_DISABLE)
    	Next
    EndFunc
    
    
    Func _EnableItems($sITEM)
    	Local $var = StringSplit($sITEM, ',')
    	For $i = 1 To UBound($var) -1
    		GUICtrlSetState($aMenuItem[$var[$i]], $GUI_ENABLE)
    	Next
    EndFunc
    
    
    ; alle Indizes abfragen: "SELECT name FROM sqlite_master WHERE type='index' ORDER BY name"
    ; Indexliste f. bestimmte Tabelle: "PRAGMA index_list(table-name);"
    ; you can use the special typeof() SQL function to determine what the datatype is: "SELECT TYPEOF(Feldname)"
    Func _LoadTreeView() ; und Combo Tabelle
    	_EnableItems('1,2')
    	Local $aResultIndex, $aResultTrigger, $aNames, $ID_Trigger, $ID_Index, $tmp, $done = False
    	_SQLite_GetTable($hSQL, "SELECT name FROM sqlite_master WHERE type='trigger' ORDER BY name", $aResultTrigger, $iRows, $iColumns)
    	_SQLite_GetTable($hSQL, "SELECT name FROM sqlite_master WHERE type='table' ORDER BY name;", $aResult, $iRows, $iColumns)
    	ReDim $a_ID_Table[$iRows]
    	If $iRows > 1 Then
    		_GUICtrlTreeView_BeginUpdate($TreeView1)
    		$ID_Table = _GUICtrlTreeView_Add($TreeView1, 0, 'Tabellen', 1, 1)
    		_GUICtrlTreeView_SetBold($TreeView1, $ID_Table)
    		If IsArray($aResultTrigger) Then
    			For $k = 2 To UBound($aResultTrigger) -1
    				$ID_Trigger = _GUICtrlTreeView_Add($TreeView1, 0, 'Trigger', 7, 7)
    				_GUICtrlTreeView_SetBold($TreeView1, $ID_Trigger)
    				_GUICtrlTreeView_AddChild($TreeView1, $ID_Trigger, StringUpper($aResultTrigger[$k]), 8, 8)
    			Next
    		EndIf
    		For $i = 0 To UBound($a_ID_Table) -1
    			If $aTable[UBound($aTable)-1] <> '' Then ReDim $aTable[UBound($aTable)+1]
    			$aTable[UBound($aTable)-1] = StringUpper($aResult[$i+2])
    			$a_ID_Table[$i] = _GUICtrlTreeView_AddChild($TreeView1, $ID_Table, StringUpper($aResult[$i+2]), 2, 2)
    			_GUICtrlTreeView_SetBold($TreeView1, $a_ID_Table[$i])
    			If _SQlite_Query ($hSQL, "SELECT * FROM " & $aResult[$i+2] & ";", $hQuery) = $SQLITE_OK Then
    				$ID_Field = _GUICtrlTreeView_AddChild($TreeView1, $a_ID_Table[$i], 'Felder', 3, 3)
    				_GUICtrlTreeView_SetBold($TreeView1, $ID_Field)
    				_SQLite_FetchNames ($hQuery, $aNames) ; Spalten/Feldnamen auslesen
    				For $k = 0 To UBound($aNames) -1
    					_GUICtrlTreeView_AddChild($TreeView1, $ID_Field, StringUpper($aNames[$k]), 4, 4)
    					; in StrukturArray eintragen:
    					If $aStruct[UBound($aStruct)-1][0] <> '' Then ReDim $aStruct[UBound($aStruct)+1][2]
    					$aStruct[UBound($aStruct)-1][0] = StringUpper($aResult[$i+2])
    					$aStruct[UBound($aStruct)-1][1] = StringUpper($aNames[$k])
    				Next
    			EndIf
    			_SQLite_QueryFinalize($hQuery)
    			If _SQLite_GetTable2d ($hSQL, "PRAGMA index_list(" & $aResult[$i+2] & ");", $aResultIndex, $iRows, $iColumns) = $SQLITE_OK Then
    				If IsArray($aResultIndex) Then
    					_ArraySort($aResultIndex, 0, 1, 0, 1)
    					For $k = 1 To UBound($aResultIndex) -1
    						If Not $done Then
    							$ID_Index = _GUICtrlTreeView_AddChild($TreeView1, $a_ID_Table[$i], 'Indizes', 5, 5)
    							_GUICtrlTreeView_SetBold($TreeView1, $ID_Index)
    							$done = True
    						EndIf
    						_GUICtrlTreeView_AddChild($TreeView1, $ID_Index, StringUpper($aResultIndex[$k][1]), 6, 6)
    ;~ Local $aResultIndexProperty
    ;~ _SQLite_GetTable2d ($hSQL,"PRAGMA index_info(" & $aResultIndex[$k][1] & ");", $aResultIndexProperty, $iRows, $iColumns) ; Test
    ;~ If IsArray($aResultIndexProperty) Then	_ArrayDisplay($aResultIndexProperty, $aResultIndex[$k][1])
    					Next
    				EndIf
    			EndIf
    			$aResultIndex = 0
    			$done = False
    		Next
    		Local $aDB   ; Abfrage Original-SQL-Code
    		_SQLite_GetTable ($hSQL,"SELECT sql FROM " & _
    			"(SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master) " & _
    			"WHERE type!='meta' ORDER BY tbl_name, type DESC, name", $aDB, $iRows, $iColumns)
    		Local $aTableSQL[1][3], $aIndexSQL[1][2], $aTriggerSQL[1][2], $ret, $ret1, $sApp, $sTmp
    		If IsArray($aDB) Then
    			$sApp = ''
    			For $q = 2 To $iRows
    				$aDB[$q] = StringStripWS(StringRegExpReplace($aDB[$q], '\r\n', ','), 3)
    				If $aDB[$q] <> '' Then $sApp &= $aDB[$q] & @CRLF
    			Next
    		EndIf
    		_GUICtrlEdit_AppendText($EditSQL, $sApp)
    		_GUICtrlTreeView_ExpandOneLevel($TreeView1, $ID_Table)
    		_GUICtrlTreeView_EndUpdate($TreeView1)
    	EndIf
    	; Combo Tabelle füllen:
    	_GUICtrlComboBox_BeginUpdate($cbTable)
    	_GUICtrlComboBox_ResetContent($cbTable)
    	For $i = 0 To UBound($aTable) -1
    		_GUICtrlComboBox_AddString($cbTable, $aTable[$i])
    	Next
    	_GUICtrlComboBox_EndUpdate($cbTable)
    	_GUICtrlComboBox_SetCurSel($cbTable, 0)
    	_SetFields()
    EndFunc  ;==>_LoadTreeView
    
    
    Func _SetFields()
    	_SelAllFromTable()
    	Local $table = GUICtrlRead($cbTable)
    	_GUICtrlComboBox_BeginUpdate($cbField)
    	_GUICtrlComboBox_ResetContent($cbField)
    	For $i = 0 To UBound($aStruct) -1
    		If $aStruct[$i][0] = $table Then _GUICtrlComboBox_AddString($cbField, $aStruct[$i][1])
    	Next
    	_GUICtrlComboBox_EndUpdate($cbField)
    	_GUICtrlComboBox_SetCurSel($cbField, 0)
    	_GUICtrlListView_SetSelectedColumn($ListView1, 0)
    EndFunc
    
    
    Func _TableChg()
    	_SetFields()
    	For $i = 0 To UBound($a_ID_Table) -1
    		If _GUICtrlTreeView_GetText($TreeView1, $a_ID_Table[$i]) = GUICtrlRead($cbTable) Then _
    			ExitLoop
    	Next
    	ExpandOnlyTable($a_ID_Table[$i])
    	$openTable = $a_ID_Table[$i]
    EndFunc
    
    
    Func _FieldChg()
    	Local $text = GUICtrlRead($cbField)
    	Local $aCol, $iCol = _GUICtrlListView_GetColumnCount($ListView1)
    	For $i = 0 To $iCol -1
    		$aCol = _GUICtrlListView_GetColumn($ListView1, $i)
    		If $aCol[5] = $text Then ExitLoop
    	Next
    	_GUICtrlListView_SetSelectedColumn($ListView1, $i)
    	_selTVItem($text)
    EndFunc
    
    
    Func _LeftClickLV($aInfo)
    	Local $indxRow = $aInfo[3], $indxCol = $aInfo[4]
    EndFunc
    
    
    Func _ColClickLV($aInfo)
    	Local $aCol = _GUICtrlListView_GetColumn($ListView1, $aInfo[4])
    	Local $index = _GUICtrlComboBox_FindStringExact($cbField, $aCol[5])
    	_GUICtrlComboBox_SetCurSel($cbField, $index)
    	_GUICtrlListView_SetSelectedColumn($ListView1, $aInfo[4])
    	_selTVItem(GUICtrlRead($cbField))
    EndFunc
    
    
    Func _cb($aRow)
        For $s In $aRow
            ConsoleWrite($s & @TAB)
        Next
        ConsoleWrite(@LF)
    EndFunc
    
    
    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
        #forceref $hWnd, $iMsg, $iwParam
        Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndTreeview, $hWndListview
        $hWndTreeview = $TreeView1
    	$hWndListview = $ListView1
        If Not IsHWnd($TreeView1) Then $hWndTreeview = GUICtrlGetHandle($TreeView1)
    	If Not IsHWnd($ListView1) Then $hWndListview = GUICtrlGetHandle($ListView1)
    
    
        $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
        $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
        $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
        $iCode = DllStructGetData($tNMHDR, "Code")
        Switch $hWndFrom
            Case $hWndTreeview
                Switch $iCode
    				Case $NM_CLICK
                        GUICtrlSendToDummy($WM_NOTIFY_DUMMY)
    			EndSwitch
    		Case $hWndListview
    			Switch $iCode
    				Case $NM_CLICK
    					Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    					Local $aInfo[5] = [$hWndFrom, $iIDFrom, $iCode, DllStructGetData($tInfo, "Index"), _
                                            DllStructGetData($tInfo, "SubItem")]
                        _LeftClickLV($aInfo)
    				Case $LVN_COLUMNCLICK
    					Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    					Local $aInfo[5] = [$hWndFrom, $iIDFrom, $iCode, DllStructGetData($tInfo, "Index"), _
                                            DllStructGetData($tInfo, "SubItem")]
    					_ColClickLV($aInfo)
    			EndSwitch
        EndSwitch
        Return $GUI_RUNDEFMSG
    EndFunc   ;==>WM_NOTIFY
    
    
    Func _SQLite_INSERT($sTable, $saValues, $Delim=',')
    	Local $sInsert = ''
    	If Not IsArray($saValues) Then
    		Local $aValues[1] = [$saValues]
    	Else
    		Local $aValues = $saValues
    	EndIf
    	For $i = 0 To UBound($aValues) -1
    		Local $splitVal = StringSplit($aValues[$i], $Delim)
    		$sInsert &= "INSERT INTO " & $sTable & " VALUES ("
    		For $k = 1 To UBound($splitVal) -1
    			$sInsert &= "'" & StringStripWS($splitVal[$k], 3) & "'" & ','
    		Next
    		$sInsert = StringTrimRight($sInsert, 1) & ");"
    	Next
    	If $SQLITE_OK <> _SQLite_Exec ( -1, $sInsert ) Then
    		Return SetError(1,0,1)
    	Else
    		Return $SQLITE_OK
    	EndIf
    EndFunc ;==>_SQLite_INSERT
    
    
    Func _SQLite_UPDATE($sTable, $saField_Value, $sWhere=-1, $Delim=',')
    	Local $sUpdate = "UPDATE " & $sTable & " SET "
    	If Not IsArray($saField_Value) Then
    		Local $aValues[1] = [$saField_Value]
    	Else
    		Local $aValues = $saField_Value
    	EndIf
    	For $i = 0 To UBound($aValues) -1
    		Local $splitVal = StringSplit($aValues[$i], $Delim)
    		$sUpdate &= StringStripWS($splitVal[1], 3) & " = '" & StringStripWS($splitVal[2], 3) & "',"
    	Next
    	$sUpdate = StringTrimRight($sUpdate, 1)
    	If $sWhere <> -1 Then $sUpdate &= " WHERE " & $sWhere
    	If $SQLITE_OK <> _SQLite_Exec ( -1, $sUpdate ) Then
    		Return SetError(1,0,1)
    	Else
    		Return $SQLITE_OK
    	EndIf
    EndFunc  ;==>_SQLite_UPDATE
    
    
    Func _StringSplitOnce($STRING, $DELIM, $OCCURENCE=1)
    	If $STRING = '' Then Return SetError(1)
    	If $DELIM = '' Then Return SetError(2)
    	Local $Out[2]
    	Local $len = StringLen($STRING)
    	Local $pos = StringInStr($STRING, $DELIM, 1, $OCCURENCE)
    	If @error Then Return SetError(3)
    	$Out[0] = StringLeft($STRING, $pos-1)
    	$Out[1] = StringRight($STRING, $len-$pos)
    	Return $Out
    EndFunc ;==>_StringSplitOnce
    
    
    Func _Array2DDelete(ByRef $ARRAY, $iDEL)
    	Local $i, $k, $l
    	If ( Not IsArray($ARRAY) ) Then
    		SetError(1)
    		Return 0
    	EndIf
    	If ( $iDEL < 0 ) Or ( $iDEL > UBound($ARRAY)-1 ) Then
    		SetError(2)
    		Return 0
    	EndIf
    	Local $UBound2nd = UBound($ARRAY,2)
    	If @error = 2 Then
    		Local $arTmp[UBound($ARRAY)-1]
    		$k = 0
    		For $i = 0 To UBound($ARRAY)-1
    			If $i <> $iDEL Then
    				$arTmp[$k] = $ARRAY[$i]
    				$k += 1
    			EndIf
    		Next
    	Else
    		Local $arTmp[UBound($ARRAY)-1][$UBound2nd]
    		$k = 0
    		For $i = 0 To UBound($ARRAY)-1
    			If $i <> $iDEL Then
    				For $l = 0 To $UBound2nd-1
    					$arTmp[$k][$l] = $ARRAY[$i][$l]
    				Next
    				$k += 1
    			EndIf
    		Next
    	EndIf
    	$ARRAY = $arTmp
    	Return -1
    EndFunc ;==>_Array2DDelete
    
    
    Func _RecentFiles(ByRef $INI, ByRef $ARRAY, $FILE, ByRef $CURRCOUNT, ByRef $MAXCOUNT, $ASC=1)
    	Local $index
    	If UBound($ARRAY, 2) Then
    		If IsNumber($ARRAY[0][0]) Then _Array2DDelete($ARRAY, 0)
    	EndIf
    	If $ASC = 1 Then
    		If UBound($ARRAY, 2) Then
    			$index = _ArraySearch($ARRAY, $FILE, 0, 0, 0, 0, 1, 1)
    			If $index = -1 Then
    				If $CURRCOUNT = $MAXCOUNT -1 Then
    					_Array2DDelete($ARRAY, 0)
    				Else
    					$CURRCOUNT += 1
    					IniWrite($INI, 'recent_num', 'aktuell', $CURRCOUNT)
    				EndIf
    			Else
    				If $CURRCOUNT = 1 Then Return
    				_Array2DDelete($ARRAY, $index)
    			EndIf
    			ReDim $ARRAY[UBound($ARRAY)+1][2]
    		Else
    			ReDim $ARRAY[1][2]
    		EndIf
    		$ARRAY[UBound($ARRAY)-1][0] = 'file'
    		$ARRAY[UBound($ARRAY)-1][1] = $FILE
    	Else
    		If UBound($ARRAY, 2) Then
    			$index = _ArraySearch($ARRAY, $FILE, 0, 0, 0, 0, 1, 1)
    			If $index = -1 Then
    				If $CURRCOUNT < $MAXCOUNT -1 Then
    					$CURRCOUNT += 1
    					IniWrite($INI, 'recent_num', 'aktuell', $CURRCOUNT)
    					ReDim $ARRAY[UBound($ARRAY)+1][2]
    				EndIf
    			Else
    				If $CURRCOUNT = 1 Then Return
    				_Array2DDelete($ARRAY, $index)
    				ReDim $ARRAY[UBound($ARRAY)+1][2]
    			EndIf
    			For $i = UBound($ARRAY)-1 To 1 Step -1
    				$ARRAY[$i][0] = 'file'
    				$ARRAY[$i][1] = $ARRAY[$i-1][1]
    			Next
    			$ARRAY[0][1] = $FILE
    		Else
    			ReDim $ARRAY[1][2]
    			$ARRAY[UBound($ARRAY)-1][0] = 'file'
    			$ARRAY[UBound($ARRAY)-1][1] = $FILE
    		EndIf
    	EndIf
    	GUICtrlSetState($aMenuItem[22], $GUI_ENABLE)
    	IniWriteSection($INI, 'recent_file', $ARRAY, 0)
    EndFunc  ;==>_RecentFiles
    
    
    #cs
    CREATE TRIGGER [TBLNEWTEST_JAHRE_UPDATE_JAHRE]
    AFTER UPDATE OF [Jahre]
    ON [tblNewTest]
    FOR EACH ROW WHEN 50
    BEGIN
    
    
    UPDATE tblNewTest SET 'Jahre' = 100;
    
    
    END;
    
    
    * CREATE TRIGGER
    sql-statement   ::= 	CREATE [TEMP | TEMPORARY] TRIGGER [IF NOT EXISTS] trigger-name [ BEFORE | AFTER ]
                            database-event ON [database-name .] table-name
                            trigger-action
    sql-statement   ::= 	CREATE [TEMP | TEMPORARY] TRIGGER [IF NOT EXISTS] trigger-name INSTEAD OF
                            database-event ON [database-name .] view-name
                            trigger-action
    database-event  ::= 	DELETE |
                            INSERT |
                            UPDATE |
                            UPDATE OF column-list
    trigger-action  ::= 	[ FOR EACH ROW ] [ WHEN expression ]
                            BEGIN
                                trigger-step ; [ trigger-step ; ]*
                            END
    trigger-step    ::= 	update-statement | insert-statement |
                            delete-statement | select-statement
    The CREATE TRIGGER statement is used to add triggers to the database schema. Triggers are database operations (the
    trigger-action) that are automatically performed when a specified database event (the database-event) occurs.
    A trigger may be specified to fire whenever a DELETE, INSERT or UPDATE of a particular database table occurs, or
    whenever an UPDATE of one or more specified columns of a table are updated.
    At this time SQLite supports only FOR EACH ROW triggers, not FOR EACH STATEMENT triggers. Hence explicitly specifying
    FOR EACH ROW is optional. FOR EACH ROW implies that the SQL statements specified as trigger-steps may be executed
    (depending on the WHEN clause) for each database row being inserted, updated or deleted by the statement causing the
    trigger to fire.
    Both the WHEN clause and the trigger-steps may access elements of the row being inserted, deleted or updated using
    references of the form "NEW.column-name" and "OLD.column-name", where column-name is the name of a column from the
    table that the trigger is associated with. OLD and NEW references may only be used in triggers on trigger-events for
    which they are relevant, as follows:
         INSERT 	NEW references are valid
         UPDATE 	NEW and OLD references are valid
         DELETE 	OLD references are valid
    If a WHEN clause is supplied, the SQL statements specified as trigger-steps are only executed for rows for which the
    WHEN clause is true. If no WHEN clause is supplied, the SQL statements are executed for all rows.
    The specified trigger-time determines when the trigger-steps will be executed relative to the insertion, modification
    or removal of the associated row.
    An ON CONFLICT clause may be specified as part of an UPDATE or INSERT trigger-step. However if an ON CONFLICT clause
    is specified as part of the statement causing the trigger to fire, then this conflict handling policy is used instead.
    Triggers are automatically dropped when the table that they are associated with is dropped.
    Triggers may be created on views, as well as ordinary tables, by specifying INSTEAD OF in the CREATE TRIGGER statement.
    If one or more ON INSERT, ON DELETE or ON UPDATE triggers are defined on a view, then it is not an error to execute an
    INSERT, DELETE or UPDATE statement on the view, respectively. Thereafter, executing an INSERT, DELETE or UPDATE on the view causes the associated triggers to fire. The real tables underlying the view are not modified (except possibly explicitly, by a trigger program).
    Example:
    Assuming that customer records are stored in the "customers" table, and that order records are stored in the "orders"
    table, the following trigger ensures that all associated orders are redirected when a customer changes his or her
    address:
        CREATE TRIGGER update_customer_address UPDATE OF address ON customers
          BEGIN
            UPDATE orders SET address = new.address WHERE customer_name = old.name;
          END;
    With this trigger installed, executing the statement:
        UPDATE customers SET address = '1 Main St.' WHERE name = 'Jack Jones';
    causes the following to be automatically executed:
        UPDATE orders SET address = '1 Main St.' WHERE customer_name = 'Jack Jones';
    Note that currently, triggers may behave oddly when created on tables with INTEGER PRIMARY KEY fields. If a BEFORE
    trigger program modifies the INTEGER PRIMARY KEY field of a row that will be subsequently updated by the statement
    that causes the trigger to fire, then the update may not occur. The workaround is to declare the table with a
    PRIMARY KEY column instead of an INTEGER PRIMARY KEY column.
    A special SQL function RAISE() may be used within a trigger-program, with the following syntax
    raise-function  ::= 	RAISE ( ABORT, error-message ) |
                            RAISE ( FAIL, error-message ) |
                            RAISE ( ROLLBACK, error-message ) |
                            RAISE ( IGNORE )
    When one of the first three forms is called during trigger-program execution, the specified ON CONFLICT processing is
    performed (either ABORT, FAIL or ROLLBACK) and the current query terminates. An error code of SQLITE_CONSTRAINT is
    returned to the user, along with the specified error message.
    When RAISE(IGNORE) is called, the remainder of the current trigger program, the statement that caused the trigger
    program to execute and any subsequent trigger programs that would of been executed are abandoned. No database
    changes are rolled back. If the statement that caused the trigger program to execute is itself part of a trigger
    program, then that trigger program resumes execution at the beginning of the next step.
    Triggers are removed using the DROP TRIGGER statement.
    #ce
    Alles anzeigen
  • Steuerzeichen aus String löschen

    • BugFix
    • 16. Dezember 2015 um 17:45
    AutoIt
    ; Steuerzeichen sind Chr(0) bis Chr(31) aber nicht  die Zeichen für TAB und CRLF: Chr(9), Chr(10), Chr(13)
    
    
    ; Pattern generieren
    Local $sPattern = '['
    For $i = 0 To 31
    	If StringInStr(' 9 10 13 ', ' ' & $i & ' ') Then ContinueLoop
    	$sPattern &= StringFormat('\x%02i', $i)
    Next
    $sPattern &= ']+'
    ; alle Steuerzeichen in einem Rutsch mit Leerstring ersetzen
    $sReplaced = StringRegExpReplace($sText, $sPattern, '')
    Alles anzeigen
  • Größe einzelner Arrays in mehrdimensionalen Array (2D, 3D)

    • BugFix
    • 16. Dezember 2015 um 15:38

    UBound hat einen zweiten Parameter der Default=1 ist. ^^

    AutoIt
    Local $a3D[2][2][3]
    ConsoleWrite('UBound (1): ' & UBound($a3D) & @CRLF)
    ConsoleWrite('UBound (2): ' & UBound($a3D, 2) & @CRLF)
    ConsoleWrite('UBound (3): ' & UBound($a3D, 3) & @CRLF)

    Und mit UBound($array, 0) bekommst du die Dimensionsgröße.
    Somit ließe sich das in einer Schleife prima abarbeiten:

    [autoit]


    Local $a3D[2][2][3]
    For $i = 1 To UBound($a3D, 0)
    ConsoleWrite('UBound ' & $i & ': ' & UBound($a3D, $i) & @CRLF)
    Next

    [/autoit]
  • .TXT einlesen, bestimmten Nummernkreis prüfen und ggf. ersetzen

    • BugFix
    • 16. Dezember 2015 um 13:19
    AutoIt
    $inputVon = '0021000'
    $inputBis = '0023000'
    
    
    $sFile = _
    '0000001-0023088' & @CRLF & _
    '0023099-0060700' & @CRLF & _
    '0060781-0194450' & @CRLF & _
    '0194501-0196390' & @CRLF & _
    '0196401-0196440' & @CRLF & _
    '0196451-0804964' & @CRLF & _
    '0804981-0804995' & @CRLF & _
    '0804998-0995250' & @CRLF & _
    '0995269-1050440' & @CRLF
    
    
    $aNummernkreise = StringRegExp($sFile, '(\d{7})-(\d{7})', 3)
    ; Array: [Von(1),Bis(1),Von(2),Bis(2),...]
    
    
    $sRange = ''
    Local $iVon, $iBis
    
    
    For $i = 0 To UBound($aNummernkreise) -1 Step 2
    	$iVon = Int($aNummernkreise[$i])
    	$iBis = Int($aNummernkreise[$i+1])
    	If $iVon <= Int($inputVon) And $iBis >= Int($inputBis) Then
    		$sRange = StringFormat('%s-%s', $aNummernkreise[$i], $aNummernkreise[$i+1])
    		ExitLoop
    	EndIf
    Next
    
    
    If $sRange <> '' Then
    	ConsoleWrite('Bereich existiert in: ' & $sRange & @CRLF)
    Else
    	ConsoleWrite('Bereich noch nicht vorhanden.' & @CRLF)
    EndIf
    Alles anzeigen
  • WD MyCloud 4 TB - HDD fährt nicht in den Standby

    • BugFix
    • 16. Dezember 2015 um 09:40
    Zitat von Yaerox

    Sehr enttäuscht, zumal es ein WD-Produkt ist.

    Die Enttäuschung kenne ich. Ich hatte mal das LiveBook pro als Datenspeicher gekauft. Dachte auch, dass man mit WD nix falsch machen kann. Inzwischen bin ich geheilt. Was anderes als nackte Festplatten (die können sie sehr gut) werde ich von denen nicht mehr kaufen. Das LiveBook hatte pünktlich nach Ablauf der Garantie seinen Geist aufgegeben und zwar der interne Controller, nicht die Festplatte. Leider verwendet WD hier ein völlig wirres einzigartiges Dateiformat. Dieses kann nicht mit irgendeinem anderen Rechner ausgelesen werden. X/

  • Fehler in "date.au3" - v3.3.8.1

    • BugFix
    • 16. Dezember 2015 um 09:32
    Zitat von x0r

    hier erhalte ich "50", wobei die aktuelle Kalenderwoche "51" ist.

    v3.3.8.1.... und deshalb sollte man zumindest gelegentlich seine Software aktualisieren. Der Fehler ist schon recht lange gefixed, war in deiner Version aber noch vorhanden.

  • .TXT einlesen, bestimmten Nummernkreis prüfen und ggf. ersetzen

    • BugFix
    • 15. Dezember 2015 um 18:28

    Hier mal ein kleiner Denkansatz zum Vereinzeln der Werte. Das andere ist ja dann nur ein simpler Vergleich, solltest du schaffen. Wenns Probleme gibt, frag nach.

    AutoIt
    $sFile = _
    '0000001-0023088' & @CRLF & _
    '0023099-0060700' & @CRLF & _
    '0060781-0194450' & @CRLF & _
    '0194501-0196390' & @CRLF & _
    '0196401-0196440' & @CRLF & _
    '0196451-0804964' & @CRLF & _
    '0804981-0804995' & @CRLF & _
    '0804998-0995250' & @CRLF & _
    '0995269-1050440' & @CRLF
    
    
    $aNummernkreise = StringRegExp($sFile, '((\d{7})-(\d{7}))', 3)
    ; Array: [Von-Bis(1),Von(1),Bis(1),Von-Bis(2),Von(2),Bis(2),...]
    
    
    For $i = 0 To UBound($aNummernkreise) -1
    	If Mod($i,3) = 0 Then ConsoleWrite('Von-Bis: ' & $aNummernkreise[$i] & @CRLF)
    	If Mod($i,3) = 1 Then ConsoleWrite('Von: ' & $aNummernkreise[$i] & @CRLF)
    	If Mod($i,3) = 2 Then ConsoleWrite('Bis: ' & $aNummernkreise[$i] & @CRLF)
    Next
    Alles anzeigen
  • Regulärer Ausdruck: Erkennen von '>'

    • BugFix
    • 15. Dezember 2015 um 10:06
    Zitat von Aquaplant

    "(^[ATGC]+[ATGC\s]*)"
    "^([ATGC]+[ATGC\s]*)"

    Zitat von Aquaplant

    Nehme ich das '^' weg funktioniert er, nur holt er sich dann eben auch noch alle a, t, g und c's aus den restlichen Wörtern...

    Beide Pattern sind nicht für Multiline-Suche. Somit ist das ^ nur ein Marker für den Stringanfang, also nicht auch für 'nach Zeilenumbruch'.
    Wenn du (?m) vor dein Pattern stellst (bedeutet: Match the remainder of the regex with the options: ^ and $ match at line breaks (m) ), arbeitet es so, wie erwartet.
    Und wenn du die Pattern verknüpfst, bekommst du mit einem Aufruf alle Ergebnisse in ein Array:
    Item-0: Name1
    Item-1: Sequenzen1
    Item-2: Name2
    Item-3: Sequenzen2
    etc.
    Immer im Wechsel Name und zugehörige Sequenzen.

    EDIT: Sinnvoll ist noch, die Zeilenumbrüche aus den Sequenzen zu entfernen. Habe das mal am Ende angefügt.

    AutoIt
    #include <Array.au3>
    $sPattern = '(?m)(?:>)([^\r\n]+)[\r\n]+(^[ATGC\s]+)'
    $sText = _
    '>Smp_175550 Gene Sequence' & @CRLF & _
    'ATGGCGTCCG AATTAGAAGC ATATGTTGGC CGTATCCTTT TTCTTGTTGG TTAAAAATTT' & @CRLF & _
    'GGTGTTTGTT AGTTCGAAAT CAACCATAGT AGTTGTAGGA GGATGTAGTG ATAGTGGTTC' & @CRLF & _
    'CTTCTTACAC CATTTAGATA TACATTTTCA TATTTAAAAA AACCATATTA TTTTATTCTT' & @CRLF & _
    'CTCCTCCATT TGATCTTATT CGCTTTCTCT TTGCAAATAT AATTTCATTA TATTTATATG' & @CRLF & _
    'AAATAATATG CGTATATTAT ATAAGTAAAA TTCTATGTCA ATTTGTGTAC GTTGTTTTTT' & @CRLF & _
    'CCCAACTATC TGATAACTTC AAATCAATTA GCTTTTCGCT TAAATAAATG AAAAAAAAAA' & @CRLF & _
    'TGCAACTGTG ACTTAGTAAC AGTTCATAAT GTTATTGACT GTTCGACTGA AGCGTGTAGG' & @CRLF & _
    'TGTGTGTTTA TAGGCTAACT GGTTGTGCTC CGCGTGATTA TCGCATGCAA TTTAATATAA' & @CRLF & _
    'AGAAGTAGTT TGTGATCCTA TGGTACAAAT ATACAAGATA ATCGACTGAG TGAGTAGTCC' & @CRLF & _
    'AGCTGAGCAT ACCAGGAAAA GATACTAAAT AATTGGACTA ATATACTAGC TCACAGCTGA' & @CRLF & _
    'AAACGAATGT AAGGCCAATA AAAGTTACCT TCTATTCACT AAATCTCGTT GTTTACGCAT' & @CRLF & _
    'ATCAGTCTTT TCTTTCATTC AAGCTATTTC TTTTTTATTT CGCTTATTTT CGTTACAATA' & @CRLF & _
    'ACTTTGAATG TATTCATCAA ATATTTCATG TATAGTCTAT GCTCGTAGGA TGTACACGCA' & @CRLF & _
    'ATCAATTTCA GTGGATCAGT AAACAGAATA TCAATATTGC ATATCTATCA TCTAGGGAAT' & @CRLF & _
    'TCTACTTTCT TTAACCATTT TCTTTATATA TACCAGGAAT GGTAAATGTT ATAACATCAG' & @CRLF & _
    'ATGGAAGAAC TATTGTCGTA AGTGAAGTTT TTTTTGAATT ATATGTATTT ATATACTCAA' & @CRLF & _
    'TTTAGTTTAG TCAAGTTAAA AGAAGTGCTA ATTCCCAAAC AAACAAAAAT TTATCAGTAA' & @CRLF & _
    'GGAGTAACAT AAATTCATTC AGTATTGTTT GTTTGAATCT TCTCATCGAT GTGTTAGGAC' & @CRLF & _
    'TGCACAGTAT GCACATATAC CAATTAGAGA CTGACCAGTT GCAGTCCTAA CACATCGATG' & @CRLF & _
    'GAAAGATTCA AACAAACAAT ACTAAATGAA CTTAAACTTC ACCCCATCGC ACAAGCAAGT' & @CRLF & _
    'GGCTATCAGG ACTCAGTGGC CGAGTGGATA ACGCGATGGC GTTTGAAGCG AAGGTTACTG' & @CRLF & _
    'GGTTCGAGTG CCAGAGTGAA CATCAACTGT GAGATGCAGG TACACCCAGC TGACGAGTCC' & @CRLF & _
    'CAAATAGTAC GAAACGCGCG TCCTGAATTT CACTGCTAGT CACTATCCAT CTTTGCATAC' & @CRLF & _
    'CAAGAAGTAA CATATTTATA CCGAGCTAGA ATACCAATAA TTAATAGAAA CAATTTAAAT' & @CRLF & _
    'TGTTCACACA CACAAGAGAA AATGTACGAT CAAAAGCAAA GCGGCGATAG ATGAGGAAAA' & @CRLF & _
    'AAATATTTTG ACAGGTAGAA TCATCAAAAT TTGATTATGA GTGAATGGAA TAATTCATTA' & @CRLF & _
    'CGATAGGAAA GACAACACGC TGCAGCATAC GTGTCAATTA ATTATCAGAA GAGGGTTTTT' & @CRLF & _
    'GTGGAGATTT AGTATTTTCA TAGTTGAAAT CACGACCTCG ACTCGTGGAT GCGCACTGCT' & @CRLF & _
    'GAGGAGTCCC ACAATGGGGC GAAACGGCCT TCCAGTACTC TCAGGTTTTC CATGGTGGTC' & @CRLF & _
    'GAGCTTCGAT TGACTCACGC TTTCAACTAT TTAAATAATT ACAAAAGCAA TTCCAACTAT' & @CRLF & _
    'TGAGAATTTG TTAGATTTAC AAAGATAATG TAACCGATGT TGTATAAATT GAAAGACTGT' & @CRLF & _
    'CACAGCTTCT CAGAATATTT ATACAGAAAT ATATTTATAG AATACTGAAT GGTTCCACAA' & @CRLF & _
    'CACATCCAGC TCAACAACAA CAGTCAATTC GTAGCTGAAA CAAGCACAAA ATCCTATCTT' & @CRLF & _
    'ATATGCCAGG ATAGATTGAG TATGAATCAA TAAACCAGAG AACAGTTGAT TTACTAATAT' & @CRLF & _
    'TTATTTTTAT CAATGAAATA CAAGGAACGG AAAAATTCTA GTCACTCATA TATATATCAT' & @CRLF & _
    'ATTTATAATG TGCGAGCTTC ATACTCTCTA CTCCGGATTT AGAGTTAATT TCATTTTCCC' & @CRLF & _
    'TTTATTTTGC GTTGATAACA ACTGCCCAAA TCTTCTGTAA TACTTAGTTG TCAGATTTAC' & @CRLF & _
    'CCCTTTTATA TCAACTGATT CGTCTCTTCT CAGTATCAGT AAATTGCTCG GCAAGAGTAC' & @CRLF & _
    'ACTTTCTTCA CCAAAATCTT CCATCAGTCT TACTAACGGC TTGTTTTTCA AATCCTTTCT' & @CRLF & _
    'GCCTTCACTA GTGTTGTCTG AAGTACAATA TCAGTAATCG GCTATTGATC TAAAACAAAT' & @CRLF & _
    'ACTACTATCC TTTCACATCG TTTTGATAAA CCTCCCTATA ATCCTATGTA GTAGGCTTTC' & @CRLF & _
    'GGAAGATTAC CTTGAATATT AATTTAACAT AAACTAGTTA TTTTTTTGTG GTACTATCTA' & @CRLF & _
    'GTATTTATAT ATATTCCGAC AAGCTATCTT CTCGTTTACA TGACCTCGTC TACATTTTCC' & @CRLF & _
    'TGGTGAATAT AATAAAGCTT TTTATTAATC ATTAACAAAA TACAGATCAT AACATTATTT' & @CRLF & _
    'ATTTATTTAA ACATAGATAT TGATACAAAA AGCACCAGAT ACACATGCGC CGCACAAATC' & @CRLF & _
    'TCATTCGATT TGTGAGGGCT GTGATACTGC CCAGGTGCCC AAACTGAAGC GGGTGGTTTT' & @CRLF & _
    'CTTAGGGGGT CACACCCGGA GCCTTTGACC TAAAATTCTA ATCCACAAGG CAGTGGAGCA' & @CRLF & _
    'TCGTAAGAAG ATGCAGTCCC ACGGTAGCCG GTGACCAACG ATTGATTCGT ACGCCATTTG' & @CRLF & _
    'TTCCCTCAGG ATACTGGAGC ACCACTGGTT TTGAATCAGG GTTTTCTAAC TCCCCTAGAT' & @CRLF & _
    'GGATTTTCCG TGTACACCAA CCCGGTTGAA GCGTCGGACA TTCGCTTTTC GTCCTCTCAA' & @CRLF & _
    'TTTCGTAAAC GACACCCTCT TTACGGGAAG GCAGTGAGTA GGACTTCCGT GACAGAGGCT' & @CRLF & _
    'ATATACGCGT GGCCATGTGA GAGCATTTGG AGAGGGAGAG TGGGCTCTCC CCACTCTCGG' & @CRLF & _
    'CCGTACCAAG GCATTTGGGG GCAAAAGCCG TGCGCCGGCC GTGAATTTTC ATTCCATTTT' & @CRLF & _
    'GAATTTCTAT ATGAATGATG ATAAAATTAT TTTGTTTACC ATCCTTGTCA TCCTAGCTAA' & @CRLF & _
    'TCTTAATAAA ATTACTCACT TTACTAGGGT ACATTAAAAG GATTTGATAA TGTTGTCAAT' & @CRLF & _
    'CTTGTTATCA AAGATAGCCA TGAACGAGTT TTCAGTCCAA CTGAAGGTGT TGAACAAGTT' & @CRLF & _
    'CCATTGGGTT TATTTATTAT TCGAGGACAG AATGTGTAAG TTGTGTTGAT ATAAAGCTGT' & @CRLF & _
    'AGTTAGTTGC AAAATTACTA GTTCTGAGGT TGAAACTTTA AATGATGCAA TATTTATTTG' & @CRLF & _
    'TACTATGCTA TTTTTTCCAG GGCTGTAGTC GGAGAACTTG ATGAAGATCT AGATAGGCGA' & @CRLF & _
    'ATTGATTTTT CACAACTTCG TGCTGAACCT CTTAATCCTG TTGTACATTA A' & @CRLF & _
    '>Full transcript CDS' & @CRLF & _
    'ATGGCGTCCG AATTAGAAGC ATATGTTGGC CGAATGGTAA ATGTTATAAC ATCAGATGGA' & @CRLF & _
    'AGAACTATTG TCGGTACATT AAAAGGATTT GATAATGTTG TCAATCTTGT TATCAAAGAT' & @CRLF & _
    'AGCCATGAAC GAGTTTTCAG TCCAACTGAA GGTGTTGAAC AAGTTCCATT GGGTTTATTT' & @CRLF & _
    'ATTATTCGAG GACAGAATGT GGCTGTAGTC GGAGAACTTG ATGAAGATCT AGATAGGCGA' & @CRLF & _
    'ATTGATTTTT CACAACTTCG TGCTGAACCT CTTAATCCTG TTGTACATTA A' & @CRLF
    $aMatch = StringRegExp($sText, $sPattern, 3)
    For $i = 0 To UBound($aMatch) -1
    	If Mod($i,2) Then
    		$aMatch[$i] = StringRegExpReplace($aMatch[$i], '[\r\n]+', ' ')
    	EndIf
    Next
    _ArrayDisplay($aMatch)
    Alles anzeigen
  • Grias eich

    • BugFix
    • 15. Dezember 2015 um 09:30
    Zitat von Alina

    Aber wer kocht, wäscht auch ab und das ohne Abwaschmaschine.

    Selbstredend, ist bei mir i.A. bereits erledigt, wenn das Essen fertig ist (mit Ausnahme, der Behälter, wo das Essen auf seinen Verzehr wartet :D ).
    Allerdings ist ohne Spülmaschine ziemlich umweltfeindlich (hoher Wasserverbrauch) und macht auch lange nicht so gründlich sauber, wie die Maschine. :P

    @Reiterfuchs:
    Entschuldige, dass dein Thread so dermassen als OT gekapert wurde. Ich bekenne mich schuldig und ziehe mich nun reumütig zurück.

  • Grias eich

    • BugFix
    • 14. Dezember 2015 um 15:37

    Willkommen im Forum.

    Zitat von Reiterfuchs

    Komisch, auf das Kochen können reagieren alle Frauen gleich.

    Ähm... wieso reagieren Frauen so, können Frauen kochen?! :rofl:
    Ich laß zwar meine Frau auch kochen, aber wenn es um Festtagsessen geht übergibt sie mir freiwillig das Zepter. Gans ala Papa ist halt nicht zu toppen. :theke:

  • Nach Upgrade von Win7 auf Win10 funktioniert die usb-Kommunikation über "commg.dll" nicht mehr

    • BugFix
    • 13. Dezember 2015 um 19:51
    Zitat von solor2412

    Nach dem versuchsweisen Umstieg auf Win10 funktioniert das Ganze nicht mehr,
    also das Programm, das unter Win7 läuft funktioniert unter Win10 nicht mehr.

    Versuch macht kluch. :rolleyes:
    In diesem Fall - Finger weg von dem Drecks-Beta-Müll. Habe gerade bei einem Kumpel den PC neu aufgesetzt, weil er sich verleitet fühlte den Win10-Rotz zu installieren. Hardware wurde kaum erkannt (nicht mal ein lumpiges Standard-DVD-Laufwerk) und beim Rollback verfing sich der PC in einem Shutdown-Reboot-Loop.
    Wenn man sich als Beta-Tester bereit stellt, sollte man auf jeden Fall in einer VM installieren. Ich persönlich kann allerdings in Win10 nichts entdecken, was bei Win7 nicht besser gelöst war. :thumbdown:

  • Die neue Rechner/Arbeits-ecke

    • BugFix
    • 9. Dezember 2015 um 21:52
    Zitat von Peter S. Taler

    Von Klebefolie auf der Spanplatte rate ich drastisch ab --> wird nix.

    HeHe, jahrelange Erfahrung, geht super. Ist nur sehr frickelig das sauber aufzutragen. Aber ich stimme dir insofern zu, dass sich z.B. Holztapete nass aufgezogen besser macht. Dauert nur länger wegen der Trockenphase und sollte hinterher noch mit einem klaren Mattlack als Schutz überzogen werden.

  • Die neue Rechner/Arbeits-ecke

    • BugFix
    • 9. Dezember 2015 um 17:21

    Wenn Standardgrößen nicht passen, ist selbst Bauen echt die beste Variante. Du hast zwar keine Maße angegeben, aber wenn du das als Einbaumöbel (also Verschraubung an der Wand) gestaltest, kommst du wahrscheinlich mit Materialkosten um die 150 EUR weg.
    Halterahmen an die Wand, 21 mm Spanplatte drauf, schicke verchromte Anschraubfüße (3 sollten reichen). Für gutes Aussehen noch eine Klebefolie draufziehen - ferddisch. Arbeit für einen gemütlichen Samstag (inkl. Einkauf, Zuschnitt erledigt der Baumarkt gratis).

  • Funktionen KV

    • BugFix
    • 7. Dezember 2015 um 22:53

    Wer mal mit KV-Software (Krankenversicherung) zu tun hat, kann evtl. folgende Funktionen gebrauchen.

    AutoIt
    #include <Date.au3>
    
    
    ;===============================================================================
    ; Function Name...: _PLZ_OstWest
    ; Description.....: Prüft, ob eine PLZ im Bereich Ost oder West liegt
    ; Parameter(s)....: $_iPLZ   Die zu prüfende PLZ
    ; Return Value(s).: '9' - wenn PLZ in Region Ost, sonst '1'
    ; Note............: Der Returnwert orientiert sich an den Regionalkennungen für den Versicherungsstatus.
    ; Author(s).......: BugFix
    ;===============================================================================
    Func _PLZ_OstWest($_iPLZ)
    	Local Static $aPLZOst[][2] = [ _
    	[01001,01936],[01941,01998],[02601,02999],[03001,03253],[04001,04579],[04581,04639],[04641,04889], _
    	[04891,04938],[06001,06548],[06551,06578],[06601,06928],[07301,07950],[07920,07980],[07982,07982],[07985,07989], _
    	[08001,09669],[10115,10115],[10117,10117],[10119,10119],[10178,10179],[10243,10243],[10245,10245],[10247,10247], _
    	[10249,10249],[10315,10315],[10317,10319],[10365,10365],[10367,10367],[10369,10369],[10405,10405],[10407,10407], _
    	[10409,10409],[10435,10435],[10437,10437],[10439,10439],[12435,12435],[12437,12437],[12439,12439],[12459,12459], _
    	[12487,12487],[12489,12489],[12524,12524],[12526,12527],[12555,12555],[12557,12557],[12559,12559],[12587,12587], _
    	[12589,12589],[12619,12619],[12621,12621],[12623,12623],[12627,12627],[12629,12629],[12679,12679],[12681,12681], _
    	[12683,12683],[12685,12685],[12687,12687],[12689,12689],[13051,13051],[13053,13053],[13055,13055],[13057,13057], _
    	[13059,13059],[13086,13086],[13088,13089],[13125,13125],[13127,13127],[13129,13129],[13156,13156],[13158,13159], _
    	[13187,13187],[13189,13189],[14401,14715],[14723,16949],[17258,17258],[17001,17256],[17258,17259],[17261,17291], _
    	[17301,17322],[17326,17326],[17328,17331],[17335,17335],[17337,19260],[19307,19357],[19273,19306],[19357,19417], _
    	[23921,23999],[29401,29416],[36401,36469],[37301,37359],[38481,38489],[38801,39649],[96501,96529],[98501,99998]]
    	For $i = 0 To UBound($aPLZOst) -1
    		If $_iPLZ >= $aPLZOst[$i][0] And $_iPLZ <= $aPLZOst[$i][1] Then Return '9'
    	Next
    	Return '1'
    EndFunc  ;==>_PLZ_OstWest
    
    
    ;===============================================================================
    ; Function Name...: _CheckRente
    ; Description.....: Prüft, ob mit dem Geburtsdatum aktuell das Rentenalter erreicht ist
    ; Parameter(s)....: $_sGebDat   Das Geburtsdatum als 'TT.MM.JJJJ'
    ; Return Value(s).: True oder False
    ; Author(s).......: BugFix
    ;===============================================================================
    Func _CheckRente($_sGebDat)
    	Local Static $aAge[][3] = [ _ ; [Geburtsjahr,Renteneintritt-Jahre,Renteneintritt-plus-Monate]
    	[1949,65,3],[1950,65,4],[1951,65,5],[1952,65,6],[1953,65,7],[1954,65,8],[1955,65,9],[1956,65,10], _
    	[1957,65,11],[1958,66,0],[1959,66,2],[1960,66,4],[1961,66,6],[1962,66,8],[1963,66,10]] ; ab GebJahr 1964 = 67 Jahre
    	Local $JJJJ = StringRight($_sGebDat, 4), $MM = StringMid($_sGebDat, 4, 2)
    	If $JJJJ < 1949 Then Return True
    	Local $sDate
    	; Renteneintritt ist am ersten des Monats in dem das Rentenalter erreicht wird, daher rechne ich auch beim GebDat mit '01.'
    	If $JJJJ <= 1963 Then
    		For $i = 0 To UBound($aAge) -1
    			If $aAge[$i][0] = $JJJJ Then
    				$sDate = _DateAdd('Y', $aAge[$i][1], StringFormat('%s/%s/01', $JJJJ, $MM))
    				$sDate = _DateAdd('M', $aAge[$i][2], $sDate)
    				If _DateDiff('M', $sDate, StringFormat('%s/%s/01', @YEAR, @MON)) > -1 Then Return True
    			EndIf
    		Next
    	Else
    		$sDate = _DateAdd('Y', 67, StringFormat('%s/%s/01', $JJJJ, $MM))
    		If _DateDiff('M', $sDate, StringFormat('%s/%s/01', @YEAR, @MON)) > -1 Then Return True
    	EndIf
    	Return False
    EndFunc  ;==>_CheckRente
    
    
    ;===============================================================================
    ; Function Name...: _MakeStatus
    ; Description.....: Erstellt den altersgemäßen und wohnortabhängigen Standard-Versicherungsstatus.
    ; Parameter(s)....: $_iPLZ      PLZ Wohnort
    ; Parameter(s)....: $_sGebDat   Das Geburtsdatum als 'TT.MM.JJJJ'
    ; Return Value(s).: Standard-Versicherungsstatus
    ; Note............: Nicht berücksichtigt wird, dass Familienversicherung ('3') auch bei Personen,
    ; ................: die bereits 18 und älter sind, vorhanden sein kann. Ebenso werden
    ; ................: spezielle Kennungen für Hausarztprogramme etc. außer Acht gelassen.
    ; Author(s).......: BugFix
    ;===============================================================================
    Func _MakeStatus($_iPLZ, $_sGebDat)
    	Local $sRegion = _PLZ_OstWest($_iPLZ), $sRente
    	If _CheckRente($_sGebDat) Then
    		$sRente = '5'
    	Else
    		If _DateDiff('Y', StringRegExpReplace($_sGebDat, '(\d\d)\.(\d\d)\.(\d{4})', '\3/\2/\1'), _
    		StringFormat('%s/%s/%s', @YEAR, @MON, @MDAY)) < 18 Then
    			$sRente = '3'
    		Else
    			$sRente = '1'
    		EndIf
    	EndIf
    	Return StringFormat('%s000%s', $sRente, $sRegion)
    EndFunc  ;==>_MakeStatus
    Alles anzeigen
  • begrenzte Nutzungsdauer am PC: Konzeption technisch umsetzbar? (Kindersicherung)

    • BugFix
    • 7. Dezember 2015 um 16:02
    Zitat von Bioshade

    Jeder, der hier im Forum bereits einmal einen Windows-Service in AutoIt geschrieben hat weiß ganz genau: Egal wie simpel das Programm gehalten ist ... man hat ganz schnell einen Memory-Overflow erschaffen oder das Programm läuft - wie bereits erwähnt in eine Exception.

    Hmm, soll ich mir jetzt Sorgen machen, dass 1 Skript seit 2 Jahren und 3 Monaten (da wurde der PC zuletzt neu gestartet) ohne Murren als Dienst 24/7 arbeitet? :D
    Auch ein neuer Dienst, installiert Anfang August, weigert sich bisher beharrlich Schwierigkeiten zu machen. :whistling:

    Ich denke, man sollte nicht pauschal urteilen. Mir persönlich ist es noch nie passiert, dass ein (endgültig fertiggestelltes) Skript den Overflow-Tod gestorben ist.

  • Fehler bei include zip.au3

    • BugFix
    • 7. Dezember 2015 um 14:38

    Nicht schließen, auf gelöst setzen im Startpost "Thema Bearbeiten"

  • Fehler bei include zip.au3

    • BugFix
    • 7. Dezember 2015 um 13:57

    ; $iIndexBase Index Basis (erstes Element mit Pfad) des übergebenen Arrays (0 od.1)
    --> Ist optional, nur wenn mehrere Dateien in einem Array übergeben werden ist diese Angabe erforderlich
    --> Wird aber der nachfolgende Parameter $fOverwrite nicht mit dem Standardwert benutzt, muss $iIndexBase auf jeden Fall mit angegeben werden, da Parameter in der Reihenfolge ihrer Definition zu übergeben sind. Der Wert spielt dann aber keine Rolle.

    ; $fOverwrite Falls $sPath existiert ==> Überschreiben (Standard=True)
    --> Der voreingestellte Wert (True) überschreibt eine evtl. existierende Datei gleichen Namens
    --> Ist das nicht gewünscht, so muss dieser Parameter angegeben werden mit False

  • Fehler bei include zip.au3

    • BugFix
    • 7. Dezember 2015 um 12:06

    Kann sein, dass der Anhang beim Forenumzug aufs neue Portal einen mitgekriegt hat.:S Habs gerade getestet, man kommt gar nicht zum Download, ist ein Datenbankfehler im Forum.
    Kopiere doch einfach die Funktion aus dem Thread direkt in dein Skript, sparst du dir auch das Include.

  • Fehler bei include zip.au3

    • BugFix
    • 7. Dezember 2015 um 11:21
    Zitat von Reiterfuchs

    Ich muss die Datei "BuildInZIP.au3" wohin packen?

    Wenn du einen Ordner für eigene Includes in den Properties festgelegt hast - dann dorthin. Sonst: Wo immer du willst.

    Zitat von Reiterfuchs

    Und der include-Befehl lautet dann auf den Dateinamen oder?

    wenn irgendwo abgespeichert: #include "C:\voller_Pfad\zur_Datei\Dateiname.au3"
    wenn im ScriptDir abgespeichert oder im registrierten Includepfad funktioniert es auch mit #include <Dateiname.au3>

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™