Da ich FF nicht nutze, habe ich auch noch nie mit der FF.au3 gearbeitet.
Aber ich gehe mal davon aus, dass _FFStart eine Instanz zurückgibt, die du im weiteren Funktionsumfang nutzen mußt.
Es wird sicher hier schon etliche Skripte geben, die den FF nutzen - quäl mal die Suche und schau dir an, wie es dort gelöst wurde.
Beiträge von BugFix
-
-
Der Begriff "Media Center" ist vielleicht etwas übertrieben, aber ich habe nix passenderes griffiges gefunden.
Ich hab zwar keine Verwendung dafür - kann dir aber (da es um Filme geht) einen vllt. treffenderen Namen anbieten: MovieControl (oder MovieControlCenter) -
Da kannst du eh nicht viel dran schrauben, Wert von 0-31 möglich, Schneller geht nicht. MS Link
-
Hier ein altes Bsp. von mir:
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
Global $arRadio[10], $str$gui = GUICreate('test', 500, 400)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlCreateGroup('', 10, 10, 400, 60)
$arRadio[0] = GUICtrlCreateRadio('Radio 1', 20, 20, 70)
$arRadio[1] = GUICtrlCreateRadio('Radio 2', 20, 45, 70)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup('', 10, 80, 400, 60)
$arRadio[2] = GUICtrlCreateRadio('Radio 3', 20, 90, 70)
$arRadio[3] = GUICtrlCreateRadio('Radio 4', 20, 115, 70)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup('', 10, 150, 400, 60)
$arRadio[4] = GUICtrlCreateRadio('Radio 5', 20, 160, 70)
$arRadio[5] = GUICtrlCreateRadio('Radio 6', 20, 185, 70)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup('', 10, 220, 400, 60)
$arRadio[6] = GUICtrlCreateRadio('Radio 7', 20, 230, 70)
$arRadio[7] = GUICtrlCreateRadio('Radio 8', 20, 255, 70)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup('', 10, 290, 400, 60)
$arRadio[8] = GUICtrlCreateRadio('Radio 9', 20, 300, 70)
$arRadio[9] = GUICtrlCreateRadio('Radio 10', 20, 325, 70)
GUICtrlCreateGroup("", -99, -99, 1, 1)
For $i = 0 To UBound($arRadio) -2 Step 2
GUICtrlSetState($arRadio[$i], $GUI_CHECKED)
Next
$bCheck = GUICtrlCreateButton('Check', 10, 370, 60, 20)
GUISetState()Do
[/autoit]
$msg = GUIGetMsg()
If $msg = $bCheck Then
$str = ''
For $i = 0 To UBound($arRadio) -1
If BitAND(GUICtrlRead($arRadio[$i]), $GUI_CHECKED) Then
$str &= ControlGetText("", "", $arRadio[$i]) & @LF
EndIf
Next
MsgBox(0, '', 'Markiert sind: ' & @LF & $str )
EndIf
Until $msg = $GUI_EVENT_CLOSEEdit:
Hatte mich vertan, du wolltest ja Checkboxen - dann dieses:Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
Opt('GUIOnEventMode', 1)
Global $gui, $aCB[10]
Local $y = 20$gui = GUICreate('Test')
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent(-3, '_ende')
GUICtrlCreateGroup('', 10, 5, 100, 220)
For $i = 0 To UBound($aCB) -1
$aCB[$i] = GUICtrlCreateCheckbox('CheckBox '&$i+1, 20, $y, 70)
GUICtrlSetOnEvent(-1, '_CBClick')
$y += 20
Next
GUICtrlCreateGroup("", -99, -99, 1, 1)GUISetState()
[/autoit] [autoit][/autoit] [autoit]While True
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc _ende()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc _CBClick()
[/autoit]
For $i = 0 To UBound($aCB) -1
If @GUI_CtrlId = $aCB[$i] Then
If BitAND(GUICtrlRead($aCB[$i]), $GUI_CHECKED) Then
MsgBox(0, ControlGetText($gui, '', $aCB[$i]), 'CB Checked')
Else
MsgBox(0, ControlGetText($gui, '', $aCB[$i]), 'CB Not Checked')
EndIf
ExitLoop
EndIf
Next
EndFunc -
Hier mal ein simples Bsp., wenn das letzte Input erreicht ist springt der Fokus wieder zum ersten (kannst du natürlich auch anders handeln).
Spoiler anzeigen
[autoit]#include <WindowsConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <EditConstants.au3>
#include <GUIConstants.au3>Enum $In1, $In2, $In3, $In4, $In5, $In6, $iAnzahl
[/autoit] [autoit][/autoit] [autoit]
Global $a[$iAnzahl]$gui = GUICreate('Test')
[/autoit] [autoit][/autoit] [autoit]
$a[$In1] = GUICtrlCreateInput('', 10, 10, 40, 20)
$a[$In2] = GUICtrlCreateInput('', 60, 10, 40, 20)
$a[$In3] = GUICtrlCreateInput('', 110, 10, 40, 20)
$a[$In4] = GUICtrlCreateInput('', 10, 40, 40, 20)
$a[$In5] = GUICtrlCreateInput('', 60, 40, 40, 20)
$a[$In6] = GUICtrlCreateInput('', 110, 40, 40, 20)GUISetState()
[/autoit] [autoit][/autoit] [autoit]GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
[/autoit] [autoit][/autoit] [autoit]Do
[/autoit] [autoit][/autoit] [autoit]
Until GUIGetMsg() = -3Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
[/autoit]
Local $hWndFrom, $iIDFrom, $iCode
$hWndFrom = $ilParam
$iIDFrom = BitAND($iwParam, 0xFFFF)
$iCode = BitShift($iwParam, 16)
For $i = 0 To UBound($a) -1
If $hWndFrom = GUICtrlGetHandle($a[$i]) Then
Switch $iCode
Case $EN_CHANGE ; Sent when the user has taken an action that may have altered text in an edit control
If StringLen(GUICtrlRead($a[$i])) = 2 Then
If $i < UBound($a) -1 Then
GUICtrlSetState($a[$i+1], $GUI_FOCUS)
Else
GUICtrlSetState($a[0], $GUI_FOCUS)
EndIf
EndIf
EndSwitch
EndIf
Next
Return 0
EndFunc ;==>WM_COMMAND -
Füge zwischen den Paketen eine Pause ein (aber mit TimerInit, nicht Sleep!). Verwende z.B. eine Variable $Continue = False, mit Beginn des Kopierens auf True setzen, vor jedem neuen Paket abfragen ob True. Dann kannst du mit Button od. Hotkey den Wert bei Bedarf auf False setzen.
-
Guck mal, das habe ich mal in einem CountDown verwendet:
Spoiler anzeigen
[autoit]#include <Date.au3>
[/autoit] [autoit][/autoit] [autoit]
HotKeySet('!e', '_ende') ; Alt+e zum BeendenLocal $t, $diff, $message, $sShutDownTime = '2010/07/30 13:30:00'
[/autoit] [autoit][/autoit] [autoit]$t = TimerInit()
[/autoit] [autoit][/autoit] [autoit]
While True
If TimerDiff($t) >= 1000 Then
$diff = _DateDiff('s', _NowCalc(), $sShutDownTime)
Select
Case $diff < 60
ToolTip(StringFormat('%02u', $diff) & ' s')
Case $diff < 60*60
$message = StringFormat('%02u', Floor($diff/60)) & ':' & _
StringFormat('%02u', Mod($diff,60)) & ' min'
ToolTip($message)
Case $diff < 60*60*24
$message = StringFormat('%02u', Floor($diff/3600)) & ':' & _
StringFormat('%02u', Floor(Mod($diff,3600)/60)) & ':' & _
StringFormat('%02u', Mod(Mod($diff,3600),60)) & ' h'
ToolTip($message)
Case Else
$message = Floor($diff/86400) & ' d / ' & _
StringFormat('%02u', Floor(Mod($diff,86400)/3600)) & ':' & _
StringFormat('%02u', Floor(Mod(Mod($diff,86400),3600)/60)) & ':' & _
StringFormat('%02u', Mod(Mod(Mod($diff,86400),3600),60)) & ' h'
ToolTip($message)
EndSelect
$t = TimerInit()
EndIf
WEndFunc _ende()
[/autoit]
Exit
EndFunc -
Ich denke Andy hat es auf den Punkt gebracht. Es ist immer so schön einfach auf irgendwen mit Fingern zu zeigen anstatt sich an die eigene Nase zu fassen. Über Sinn oder Unsinn dieser Veranstaltung an sich mag man ja geteilter Meinung sein, aber wenn Ordnungskräfte Anweisungen geben, sind die halt zu befolgen.
Leider trifft es oft Unschuldige. Wenn es jene, die sich über alles hinwegsetzten erwischt haben sollte, so würde ich denen nicht eine Träne nachweinen. Den anderen gehört mein MItgefühl. -
Also du willst:
- auf einer von dir erstellten GUI
- mit der Maus
- an beliebiger Stelle
- einen Rahmen aufziehenOK, das geht (einfach mal ein ScreenCapture-Skript anschauen, da findest du das) - aber was willst du damit dann tun?
-
Leider ist deine Fragestellung absolut unklar.
WAS willst du WO markieren? Ohne das zu wissen, kann man deine Frage nicht beantworten. -
Was verstehst du denn unter 'versteckt starten' ?
Was du anführst bezieht sich nur auf die Sichtbarkeit der GUI. Das Skript selbst ist als Prozeß sichtbar (und das ist auch gut so). -
das man mit_GUICtrlListView_Create flexibler ist..
Das Funktionspaket ist schon recht umfangreich - aber die Funktion: _GUICtrlListView_Create verwende ich nie. Ich habe auch bisher noch nie die Notwendigkeit dafür gesehen. Du benötigst, um alle Funcs der UDF nutzen zu können, das ListView-Handle (auch wenn viele, wie du in den Hilfe-Bsp. siehst, mit der ID funktionieren). _GUICtrlListView_Create gibt dir das Handle direkt zurück. Ich erstelle LV immer mit $ID = GUICtrlCreateListView und lasse mir dann das Handle ausgeben ( $hWnd = GUICtrlGetHandle($ID) ). Somit kann ich wahlweise auf die nativen LV-Funcs oder die der UDF zugreifen.
Wenn ich dich richtig verstanden habe, möchtest du mehrere Gruppen erstellen ( _GUICtrlListView_InsertGroup ) und jede Gruppe andersfarbig darstellen. Ich teste mal, ob es einen 'einfachen' Weg dafür gibt und werde das dann hier posten.Edit:
Hier habe ich eine einfache Lösung dafür erstellt:Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
; Bsp: ListView Gruppen - je Gruppe einheitlich enfärben by BugFix
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>Opt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit]_Main()
[/autoit] [autoit][/autoit] [autoit]Func _Main()
[/autoit] [autoit][/autoit] [autoit]
Local $ID_LV, $hLV, $aItem[3], $aGroupColor[2][2], $enumGroup = 0
; Group 1
$aGroupColor[0][0] = '0' ; $a[n][0]=ItemIndex(e) als String mit Leerzeichen übergeben '0 1'
$aGroupColor[0][1] = 0xFFFF00 ; $a[n][1]=GroupColor
; Group 2
$aGroupColor[1][0] = '1 2'
$aGroupColor[1][1] = 0xFF00FFGUICreate("ListView Insert Group", 400, 300)
[/autoit] [autoit][/autoit] [autoit]
$ID_LV = GUICtrlCreateListView("Column 1|Column 2|Column 3", 2, 2, 394, 268)
$hLV = GUICtrlGetHandle($ID_LV); set Column width
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSendMsg($ID_LV, 0x101E, 0, 100)
GUICtrlSendMsg($ID_LV, 0x101E, 1, 100)
GUICtrlSendMsg($ID_LV, 0x101E, 2, 100); Add items
[/autoit] [autoit][/autoit] [autoit]
$aItem[0] = GUICtrlCreateListViewItem("Row 1: Col 1|Row 1: Col 2|Row 1: Col 3", $ID_LV)
$aItem[1] = GUICtrlCreateListViewItem("Row 2: Col 1|Row 2: Col 2", $ID_LV)
$aItem[2] = GUICtrlCreateListViewItem("Row 3: Col 1", $ID_LV); set Color
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To UBound($aItem) -1
If Not StringInStr($aGroupColor[$enumGroup][0], $i) Then $enumGroup += 1
GUICtrlSetBkColor($aItem[$i], $aGroupColor[$enumGroup][1])
Next; Build groups
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListView_EnableGroupView($hLV)
_GUICtrlListView_InsertGroup($hLV, -1, 1, "Group 1")
_GUICtrlListView_InsertGroup($hLV, -1, 2, "Group 2")
_GUICtrlListView_SetItemGroupID($hLV, 0, 1)
_GUICtrlListView_SetItemGroupID($hLV, 1, 2)
_GUICtrlListView_SetItemGroupID($hLV, 2, 2)GUISetState()
[/autoit] [autoit][/autoit] [autoit]; Loop until user exits
[/autoit]
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()
EndFunc ;==>_Main -
_ArrayDiaplay kann nur bis 2D-Array anzeigen.
-
Ich habe mal ein weiteres Objekt nach AutoIt portiert - das Objekt 'System.Collections.SortedList'.
In diesem Objekt werden Schlüssel-Wert-Paare automatisch (nach Schlüssel) sortiert. Schlüssel sind eineindeutig und können somit nur einmal vorkommen. Die Unterscheidung ist sensitiv ('auto' <> 'Auto').
Die Funktionen erlauben einen Zugriff mittels Schlüssel oder Index. Ich würde empfehlen die Schlüssel-basierten Funktionen vorrangig zu nutzen, denn jede Änderung an der Liste ändert auch automatisch die Indexwerte.
Die Löschfunktionen erlauben optional, nicht genutzten Speicher freizugeben. So, wie wir ReDim zur dynamischen Arrayanpassung nutzen, wird zur Laufzeit die SortedList automatisch vergrößert (mehr Speicherplatz reserviert) wenn neu hinzukommende Elemente diesen benötigen. Wenn ich also Werte lösche aber auch wieder neue hinzufüge, macht es keinen Sinn den Speicherplatz auf die tatsächliche Listengröße zu trimmen. Deshalb ist diese Option standardmäßig auf 'False' gesetzt.
Ich habe neben der Umsetzung der überwiegenden Anzahl der existierenden Methoden zusätzlich Funktionen erstellt zum Schreiben/Lesen in/aus INI/Datei.Funktionsübersicht
_ObjSortedList_Create
Erstellt eine leere SortedList._ObjSortedList_ReadFromIni
Liest die Schlüssel-Wert-Paare aus einer INI-Sektion, erstellt eine SortedList und befüllt sie damit.
Optional kann eine leere SortedList zum Befüllen übergeben werden._ObjSortedList_WriteToIni
Schreibt die Schlüssel-Wert-Paare einer SortedList in eine INI-Sektion._ObjSortedList_ReadFromFile
Liest die Schlüssel-Wert-Paare aus einer Text-Datei der Zeilenstruktur: SCHLÜSSEL DELIMITER WERT @CRLF
in eine zu erstellende/bereits existierende leere SortedList._ObjSortedList_WriteToFile
Schreibt die Schlüssel-Wert-Paare einer SortedList in eine Text-Datei (Zeilenstruktur s.o.).
Die Werte können wahlweise überschrieben oder angehängt werden._ObjSortedList_AddPair
Fügt einer SortedList ein Schlüssel-Wert-Paar hinzu._ObjSortedList_AddArray
Fügt ein Array (oder Teile davon) einer SortedList hinzu. (Array[n][0]=Key, Array[n][1]=Value)_ObjSortedList_Count
Gibt die Anzahl Schlüssel-Wert-Paare einer SortedList zurück._ObjSortedList_Clear
Löscht alle Schlüssel-Wert-Paare einer SortedList. Optional kann der Speicher freigegeben werden._ObjSortedList_RemoveByKey
Löscht ein Schlüssel-Wert-Paare einer SortedList nach Schlüssel. Optional kann der Speicher freigegeben werden._ObjSortedList_RemoveByIndex
Löscht ein Schlüssel-Wert-Paare einer SortedList nach Index. Optional kann der Speicher freigegeben werden._ObjSortedList_Clone
Erzeugt eine Kopie der SortedList._ObjSortedList_ContainsKey
Prüft ob die SortedList einen bestimmten Schlüssel enthält._ObjSortedList_ContainsVal
Prüft ob die SortedList einen bestimmten Wert enthält._ObjSortedList_SetValByKey
Ändert den Wert eines Schlüssels mit dem Schlüsselnamen._ObjSortedList_SetValByIndex
Ändert den Wert eines Schlüssels mit dem Index._ObjSortedList_RenameKeyByName
Ändert den Namen eines Schlüssels mit dem Schlüsselnamen._ObjSortedList_RenameKeyByIndex
Ändert den Namen eines Schlüssels mit dem Index._ObjSortedList_AsArray
Gibt die SortedList als 2D-Array zurück._ObjSortedList_GetIndexOfKey
Gibt den Index eines Schlüssels zurück._ObjSortedList_GetKeyByIndex
Gibt den Schlüsselnamen für einen Index zurück._ObjSortedList_GetKeyByVal
Gibt ein 2D-Array mit allen Vorkommen eines Wertes zurück.
Array[0][0]=Anzahl Vorkommen, Array[n][0]=Index, Array[n][1]=Schlüssel._ObjSortedList_GetValByIndex
Gibt den Wert für einen Index zurück._ObjSortedList_GetValByKey
Gibt den Wert für einen Schlüsselnamen zurück.Code Funktionen
[autoit];===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _ObjSortedList_Create()
; Description: Erstellt eine leere SortedList.
; Return Value(s):
; Erfolg: Ein leeres SortedList-Objekt
; Fehler: -1 @error Objekt konnte nicht erstellt werden
; Author(s): BugFix
;===============================================================================
Func _ObjSortedList_Create()
Local $oSL = ObjCreate('System.Collections.SortedList')
If Not IsObj($oSL) Then Return SetError(1, 0, -1)
Return $oSL
EndFunc ;==>_ObjSortedList_Create;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _ObjSortedList_ReadFromIni($sPATH_INI, $sSECTION, $oSL = 0)
; Description: Liest die Schlüssel-Wert-Paare aus einer INI-Sektion, erstellt eine SortedList und befüllt sie damit.
; Optional kann eine leere SortedList zum Befüllen übergeben werden.
; Parameter(s): $sPATH_INI Pfad zur INI
; $sSECTION Sektionsname
; $oSL 0 (Standard) erstellt eine neue Liste, sonst wird in die übergebene (leere) Liste eingetragen.
; Return Value(s):
; Erfolg: Ein mit den INI-Werten befülltes SortedList-Objekt
; Fehler: -1 @error 1 INI existiert nicht
; 2 Fehler beim Erstellen der Liste
; 3 Sektion existiert nicht
; $oSL @error 4 doppelte Schlüssel in INI, nur erstmaliges Auftreten verwendet
; Author(s): BugFix
;===============================================================================
Func _ObjSortedList_ReadFromIni($sPATH_INI, $sSECTION, $oSL = 0)
If Not FileExists($sPATH_INI) Then Return SetError(1, 0, -1)
If $oSL = 0 Then
$oSL = _ObjSortedList_Create()
If @error Then Return SetError(2, 0, -1)
EndIf
Local $aINI = IniReadSection($sPATH_INI, $sSECTION)
If @error Then Return SetError(3, 0, -1)
Local $ret = _ObjSortedList_AddArray($oSL, $aINI, 1)
If @error Then Return SetError(4, 0, $oSL)
Return $oSL
EndFunc ;==>_ObjSortedList_ReadFromIni;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _ObjSortedList_WriteToIni($oSL, $sPATH_INI, $sSECTION)
; Description: Schreibt die Schlüssel-Wert-Paare einer SortedList in eine INI-Sektion.
; Parameter(s): $oSL SortedList-Objekt
; $sPATH_INI Pfad zur INI
; $sSECTION Sektionsname
; Return Value(s):
; Erfolg: 1
; Fehler: -1 @error 1 Fehler beim Lesen der Liste
; 2 Fehler beim Schreiben in die INI
; Author(s): BugFix
;===============================================================================
Func _ObjSortedList_WriteToIni(ByRef $oSL, $sPATH_INI, $sSECTION)
Local $aToWrite = _ObjSortedList_AsArray($oSL)
If @error Then Return SetError(1, 0, -1)
IniWriteSection($sPATH_INI, $sSECTION, $aToWrite)
If @error Then Return SetError(2, 0, -1)
Return 1
EndFunc ;==>_ObjSortedList_WriteToIni;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _ObjSortedList_ReadFromFile($sPATH_FILE, $sDELIM = Default, $oSL = 0)
; Description: Liest die Schlüssel-Wert-Paare aus einer Text-Datei der Zeilenstruktur: SCHLÜSSEL DELIMITER WERT @CRLF
; in eine zu erstellende/bereits existierende leere SortedList.
; Parameter(s): $sPATH_FILE Pfad zur Datei
; $sDELIM Trennzeichen zw. Schlüssel u. Wert ('Default' verwendet Opt('GUIDataSeparatorChar') )
; $oSL 0 (Standard) erstellt eine neue Liste, sonst wird in die übergebene (leere) Liste eingetragen.
; Return Value(s):
; Erfolg: Ein mit den Datei-Werten befülltes SortedList-Objekt
; Fehler: -1 @error 1 Dateipfad existiert nicht
; 2 Fehler beim Erstellen der Liste
; 3 Datei enthält keine Schlüssel-Wert-Paare
; $oSL @error 4 doppelte Schlüssel in Datei, nur erstmaliges Auftreten verwendet
; Author(s): BugFix
;===============================================================================
Func _ObjSortedList_ReadFromFile($sPATH_FILE, $sDELIM = Default, $oSL = 0)
If Not FileExists($sPATH_FILE) Then Return SetError(1, 0, -1)
If IsKeyword($sDELIM) Then $sDELIM = Opt('GUIDataSeparatorChar')
If $oSL = 0 Then
$oSL = _ObjSortedList_Create()
If @error Then Return SetError(2, 0, -1)
EndIf
Local $sRead = FileRead($sPATH_FILE)
Local $aSplit = StringSplit($sRead, @CRLF, 1)
If $aSplit[0] = 1 Or ($aSplit[0] > 1 And $aSplit[1] = '') Then Return SetError(3, 0, -1)
Local $aToList[$aSplit[0]][2], $aLineSplit, $iLoop = 0
For $i = 1 To $aSplit[0]
$aLineSplit = StringSplit($aSplit[$i], $sDELIM, 3)
If @error Then
$iLoop += 1
ContinueLoop
EndIf
$aToList[$i - 1][0] = $aLineSplit[0]
$aToList[$i - 1][1] = $aLineSplit[1]
Next
If $iLoop Then ReDim $aToList[$aSplit[0] - $iLoop][2]
Local $ret = _ObjSortedList_AddArray($oSL, $aToList)
If @error Then Return SetError(4, 0, $oSL) ; doppelte Schlüssel in INI vorhanden (ignoriert)
Return $oSL
EndFunc ;==>_ObjSortedList_ReadFromFile;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _ObjSortedList_WriteToFile($oSL, $sPATH_FILE, $sDELIM = Default, $fOVERWRITE = True)
; Description: Schreibt die Schlüssel-Wert-Paare in eine Text-Datei (Zeilenstruktur s. '_ReadFromFile').
; Die Werte können wahlweise überschrieben oder angehängt werden.
; Parameter(s): $oSL SortedList-Objekt
; $sDELIM Trennzeichen zw. Schlüssel u. Wert ('Default' verwendet Opt('GUIDataSeparatorChar') )
; $fOVERWRITE 'True' (Standard) überschreibt, 'False' hängt an
; Return Value(s):
; Erfolg: 1
; Fehler: -1 @error 1 Fehler beim Lesen der SortedList
; 2 Fehler beim Öffnen der Datei
; 3 Fehler beim Schreiben in die Datei
; Author(s): BugFix
;===============================================================================
Func _ObjSortedList_WriteToFile(ByRef $oSL, $sPATH_FILE, $sDELIM = Default, $fOVERWRITE = True)
If IsKeyword($sDELIM) Then $sDELIM = Opt('GUIDataSeparatorChar')
If $fOVERWRITE Then
$fOVERWRITE = 8 + 2
Else
$fOVERWRITE = 8 + 1
EndIf
Local $sToWrite = '', $aToWrite = _ObjSortedList_AsArray($oSL)
If @error Then Return SetError(1, 0, -1)
For $i = 1 To $aToWrite[0][0]
$sToWrite &= $aToWrite[$i][0] & $sDELIM & $aToWrite[$i][1] & @CRLF
Next
Local $fh = FileOpen($sPATH_FILE, $fOVERWRITE)
If @error Then Return SetError(2, 0, -1)
FileWrite($fh, $sToWrite)
If @error Then Return SetError(3, 0, -1)
Return FileClose($fh)
EndFunc ;==>_ObjSortedList_WriteToFile;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _ObjSortedList_AddPair($oSL, $KEY, $VALUE)
; Description: Fügt einer SortedList ein Schlüssel-Wert-Paar hinzu.
; Parameter(s): $oSL SortedList-Objekt
; $KEY Schlüssel
; $VALUE Wert
; Return Value(s):
; Erfolg: 1
; Fehler: -1 @error 1 $oSL ist kein Objekt
; 2 Schlüssel bereits in Liste enthalten
; Author(s): BugFix
;===============================================================================
Func _ObjSortedList_AddPair(ByRef $oSL, $KEY, $VALUE)
If Not IsObj($oSL) Then Return SetError(1, 0, -1)
If $oSL.ContainsKey($KEY) Then Return SetError(2, 0, -1)
$oSL.Add($KEY, $VALUE)
Return 1
EndFunc ;==>_ObjSortedList_AddPair;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _ObjSortedList_AddArray($oSL, $ARRAY, $iStart = 0, $iUb = 0)
; Description: Fügt ein Array (oder Teile davon) einer SortedList hinzu.
; (Array[n][0]=Key, Array[n][1]=Value)
; Parameter(s): $oSL SortedList-Objekt
; $ARRAY 2D-Array mit Schlüssel-Wert-Paaren
; $iStart Index im Array mit erstem zu übernehmenden Paar (Standard 0)
; $iUb Index des letzten zu übernehmenden Paares (Standard 0 = bis Ende)
; Return Value(s):
; Erfolg: 1
; Fehler: -1 @error 1 $oSL ist kein Objekt
; 2 fehlerhaftes Array übergeben (falsche Dimension)
; String m. FehlIndex, @error 3 doppelte Schlüssel in Array, nur erstmaliges Auftreten verwendet
; Author(s): BugFix
;===============================================================================
Func _ObjSortedList_AddArray(ByRef $oSL, ByRef $ARRAY, $iStart = 0, $iUb = 0)
If Not IsObj($oSL) Then Return SetError(1, 0, -1)
If UBound($ARRAY, 0) <> 2 Or UBound($ARRAY) < 1 Then Return SetError(2, 0, -1)
If ($iUb <= 0) Or ($iUb > UBound($ARRAY) - 1) Then $iUb = UBound($ARRAY) - 1
If $iUb < $iStart Then $iUb = $iStart
Local $sFailIndex = ''
For $i = $iStart To $iUb
If $oSL.ContainsKey($ARRAY[$i][0]) Then
$sFailIndex &= $i & ','
ContinueLoop
EndIf
$oSL.Add($ARRAY[$i][0], $ARRAY[$i][1])
Next
If StringLen($sFailIndex) Then Return SetError(3, 0, StringTrimRight($sFailIndex, 1))
Return 1
EndFunc ;==>_ObjSortedList_AddArray;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _ObjSortedList_Count($oSL)
; Description: Gibt die Anzahl Schlüssel-Wert-Paare einer SortedList zurück.
; Parameter(s): $oSL SortedList-Objekt
; Return Value(s):
; Erfolg: Anzahl Schlüssel-Wert-Paare
; Fehler: -1 @error $oSL ist kein Objekt
; Author(s): BugFix
;===============================================================================
Func _ObjSortedList_Count(ByRef $oSL)
If Not IsObj($oSL) Then Return SetError(1, 0, -1)
Return $oSL.Count
EndFunc ;==>_ObjSortedList_Count;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _ObjSortedList_Clear($oSL, $fTRIM = False)
; Description: Löscht alle Schlüssel-Wert-Paare einer SortedList.
; Optional kann der Speicher freigegeben werden.
; Parameter(s): $oSL SortedList-Objekt
; $fTRIM 'True' gibt den nicht mehr genutzten Speicher frei, (Standard 'False')
; Return Value(s):
; Erfolg: 1
; Fehler: -1 @error $oSL ist kein Objekt
; Author(s): BugFix
;===============================================================================
Func _ObjSortedList_Clear(ByRef $oSL, $fTRIM = False)
If Not IsObj($oSL) Then Return SetError(1, 0, -1)
$oSL.Clear
If $fTRIM Then $oSL.TrimToSize
Return 1
EndFunc ;==>_ObjSortedList_Clear;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _ObjSortedList_RemoveByKey($oSL, $KEY, $fTRIM = False)
; Description: Löscht ein Schlüssel-Wert-Paar einer SortedList nach Schlüssel.
; Optional kann der Speicher freigegeben werden.
; Parameter(s): $oSL SortedList-Objekt
; $KEY Schlüssel des Paares das gelöscht werden soll
; $fTRIM 'True' gibt den nicht mehr genutzten Speicher frei, (Standard 'False')
; Return Value(s):
; Erfolg: 1
; Fehler: -1 @error 1 $oSL ist kein Objekt
; 2 Schlüssel ist nicht in Liste enthalten
; Author(s): BugFix
;===============================================================================
Func _ObjSortedList_RemoveByKey(ByRef $oSL, $KEY, $fTRIM = False)
If Not IsObj($oSL) Then Return SetError(1, 0, -1)
If Not $oSL.ContainsKey($KEY) Then Return SetError(2, 0, -1)
$oSL.Remove($KEY)
If $fTRIM Then $oSL.TrimToSize
Return 1
EndFunc ;==>_ObjSortedList_RemoveByKey;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _ObjSortedList_RemoveByIndex($oSL, $INDEX, $fTRIM = False)
; Description: Löscht ein Schlüssel-Wert-Paar einer SortedList nach Index.
; Optional kann der Speicher freigegeben werden.
; Parameter(s): $oSL SortedList-Objekt
; $INDEX Index des Paares das gelöscht werden soll
; $fTRIM 'True' gibt den nicht mehr genutzten Speicher frei, (Standard 'False')
; Return Value(s):
; Erfolg: 1
; Fehler: -1 @error 1 $oSL ist kein Objekt
; 2 Index ist nicht in Liste enthalten
; Author(s): BugFix
;===============================================================================
Func _ObjSortedList_RemoveByIndex(ByRef $oSL, $INDEX, $fTRIM = False)
If Not IsObj($oSL) Then Return SetError(1, 0, -1)
If $INDEX < 0 Or $INDEX > $oSL.Count - 1 Then Return SetError(2, 0, -1)
$oSL.RemoveAt($INDEX)
If $fTRIM Then $oSL.TrimToSize
Return 1
EndFunc ;==>_ObjSortedList_RemoveByIndex;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _ObjSortedList_Clone($oSL)
; Description: Erzeugt eine Kopie der SortedList.
; Parameter(s): $oSL SortedList-Objekt
; Return Value(s):
; Erfolg: Kopie der Liste
; Fehler: -1 @error $oSL ist kein Objekt
; Author(s): BugFix
;===============================================================================
Func _ObjSortedList_Clone(ByRef $oSL)
If Not IsObj($oSL) Then Return SetError(1, 0, -1)
Return $oSL.Clone
EndFunc ;==>_ObjSortedList_Clone;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _ObjSortedList_ContainsKey($oSL, $KEY)
; Description: Prüft ob die SortedList einen bestimmten Schlüssel enthält.
; Parameter(s): $oSL SortedList-Objekt
; $KEY Schlüssel
; Return Value(s):
; Erfolg: True / False vorhanden / nicht vorhanden
; Fehler: -1 @error $oSL ist kein Objekt
; Author(s): BugFix
;===============================================================================
Func _ObjSortedList_ContainsKey(ByRef $oSL, $KEY)
If Not IsObj($oSL) Then Return SetError(1, 0, -1)
Return $oSL.ContainsKey($KEY)
EndFunc ;==>_ObjSortedList_ContainsKey;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _ObjSortedList_ContainsVal($oSL, $VALUE)
; Description: Prüft ob die SortedList einen bestimmten Wert enthält.
; Parameter(s): $oSL SortedList-Objekt
; $VALUE Wert
; Return Value(s):
; Erfolg: True / False vorhanden / nicht vorhanden
; Fehler: -1 @error $oSL ist kein Objekt
; Author(s): BugFix
;===============================================================================
Func _ObjSortedList_ContainsVal(ByRef $oSL, $VALUE)
If Not IsObj($oSL) Then Return SetError(1, 0, -1)
Return $oSL.ContainsValue($VALUE)
EndFunc ;==>_ObjSortedList_ContainsVal;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _ObjSortedList_SetValByKey($oSL, $KEY, $NEW_VALUE)
; Description: Ändert den Wert eines Schlüssels mit dem Schlüsselnamen.
; Parameter(s): $oSL SortedList-Objekt
; $KEY Schlüssel
; $NEW_VALUE neuer Wert
; Return Value(s):
; Erfolg: 1
; Fehler: -1 @error 1 $oSL ist kein Objekt
; 2 Schlüssel nicht in Liste
; Author(s): BugFix
;===============================================================================
Func _ObjSortedList_SetValByKey(ByRef $oSL, $KEY, $NEW_VALUE)
If Not IsObj($oSL) Then Return SetError(1, 0, -1)
If Not $oSL.ContainsKey($KEY) Then Return SetError(2, 0, -1)
$oSL.SetByIndex($oSL.IndexOfKey($KEY), $NEW_VALUE)
Return 1
EndFunc ;==>_ObjSortedList_SetValByKey;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _ObjSortedList_SetValByIndex($oSL, $INDEX, $NEW_VALUE)
; Description: Ändert den Wert eines Schlüssels mit dem Index.
; Parameter(s): $oSL SortedList-Objekt
; $INDEX Index
; $NEW_VALUE neuer Wert
; Return Value(s):
; Erfolg: 1
; Fehler: -1 @error 1 $oSL ist kein Objekt
; 2 Index ist nicht in Liste
; Author(s): BugFix
;===============================================================================
Func _ObjSortedList_SetValByIndex(ByRef $oSL, $INDEX, $NEW_VALUE)
If Not IsObj($oSL) Then Return SetError(1, 0, -1)
If $INDEX < 0 Or $INDEX > $oSL.Count - 1 Then Return SetError(2, 0, -1)
$oSL.SetByIndex($INDEX, $NEW_VALUE)
Return 1
EndFunc ;==>_ObjSortedList_SetValByIndex;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _ObjSortedList_RenameKeyByName($oSL, $KEY, $NEW_KEYNAME)
; Description: Ändert den Namen eines Schlüssels mit dem Schlüsselnamen.
; Parameter(s): $oSL SortedList-Objekt
; $KEY Schlüssel (alter Name)
; $NEW_KEYNAME Schlüssel (neuer Name)
; Return Value(s):
; Erfolg: 1
; Fehler: -1 @error 1 $oSL ist kein Objekt
; 2 Schlüssel nicht in Liste
; 3 neuer Schlüsselname bereits vorhanden
; Author(s): BugFix
;===============================================================================
Func _ObjSortedList_RenameKeyByName(ByRef $oSL, $KEY, $NEW_KEYNAME)
If Not IsObj($oSL) Then Return SetError(1, 0, -1)
If Not $oSL.ContainsKey($KEY) Then Return SetError(2, 0, -1)
If $oSL.ContainsKey($NEW_KEYNAME) Then Return SetError(3, 0, -1)
Local $val = $oSL.GetByIndex($oSL.IndexOfKey($KEY))
$oSL.RemoveAt($oSL.IndexOfKey($KEY))
$oSL.Add($NEW_KEYNAME, $val)
Return 1
EndFunc ;==>_ObjSortedList_RenameKeyByName;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _ObjSortedList_RenameKeyByIndex($oSL, $INDEX, $NEW_KEYNAME)
; Description: Ändert den Namen eines Schlüssels mit dem Index.
; Parameter(s): $oSL SortedList-Objekt
; $INDEX Index
; $NEW_KEYNAME Schlüssel (neuer Name)
; Return Value(s):
; Erfolg: 1
; Fehler: -1 @error 1 $oSL ist kein Objekt
; 2 Index ist nicht in Liste
; 3 neuer Schlüsselname bereits vorhanden
; Author(s): BugFix
;===============================================================================
Func _ObjSortedList_RenameKeyByIndex(ByRef $oSL, $INDEX, $NEW_KEYNAME)
If Not IsObj($oSL) Then Return SetError(1, 0, -1)
If $INDEX < 0 Or $INDEX > $oSL.Count - 1 Then Return SetError(2, 0, -1)
If $oSL.ContainsKey($NEW_KEYNAME) Then Return SetError(3, 0, -1)
Local $val = $oSL.GetByIndex($INDEX)
$oSL.RemoveAt($INDEX)
$oSL.Add($NEW_KEYNAME, $val)
Return 1
EndFunc ;==>_ObjSortedList_RenameKeyByIndex;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _ObjSortedList_AsArray(ByRef $oSL, $TYPE = 0)
; Description: Gibt die SortedList als 2D-Array zurück.
; Parameter(s): $oSL SortedList-Objekt
; $TYPE 0 (Standard) 2D-Array m.: Array[0][0]=Anzahl, Array[n][0]=Key, Array[n][1]=Value
; 1 1D-Array nur Schlüssel
; 2 1D-Array nur Werte
; Return Value(s):
; Erfolg: Array mit Schlüsseln und/oder Werten
; Fehler: -1 @error 1 $oSL ist kein Objekt
; 2 Liste ist leer
; Author(s): BugFix
;===============================================================================
Func _ObjSortedList_AsArray(ByRef $oSL, $TYPE = 0)
If Not IsObj($oSL) Then Return SetError(1, 0, -1)
If $oSL.Count = 0 Then Return SetError(2, 0, -1)
If $TYPE < 0 Then $TYPE = 0
If $TYPE > 2 Then $TYPE = 2
Local $aOut[$oSL.Count + 1]
$aOut[0] = $oSL.Count
Switch $TYPE
Case 0
ReDim $aOut[$oSL.Count + 1][2]
$aOut[0][0] = $oSL.Count
For $i = 0 To $aOut[0][0] - 1
$aOut[$i + 1][0] = $oSL.GetKey($i)
$aOut[$i + 1][1] = $oSL.GetByIndex($i)
Next
Case 1, 2
For $i = 0 To $aOut[0] - 1
If $TYPE = 1 Then
$aOut[$i + 1] = $oSL.GetKey($i)
Else
$aOut[$i + 1] = $oSL.GetByIndex($i)
EndIf
Next
EndSwitch
Return $aOut
EndFunc ;==>_ObjSortedList_AsArray;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _ObjSortedList_GetIndexOfKey($oSL, $KEY)
; Description: Gibt den Index eines Schlüssels zurück.
; Parameter(s): $oSL SortedList-Objekt
; $KEY Schlüssel
; Return Value(s):
; Erfolg: Index des Schlüssels
; Fehler: -1 @error 1 $oSL ist kein Objekt
; 2 Schlüssel nicht in Liste
; Author(s): BugFix
;===============================================================================
Func _ObjSortedList_GetIndexOfKey(ByRef $oSL, $KEY)
If Not IsObj($oSL) Then Return SetError(1, 0, -1)
If Not $oSL.ContainsKey($KEY) Then Return SetError(2, 0, -1)
Return $oSL.IndexOfKey($KEY)
EndFunc ;==>_ObjSortedList_GetIndexOfKey;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _ObjSortedList_GetKeyByIndex($oSL, $INDEX)
; Description: Gibt den Schlüsselnamen für einen Index zurück.
; Parameter(s): $oSL SortedList-Objekt
; $INDEX Index
; Return Value(s):
; Erfolg: Schlüssel an Indexposition
; Fehler: -1 @error 1 $oSL ist kein Objekt
; 2 Index nicht in Liste
; Author(s): BugFix
;===============================================================================
Func _ObjSortedList_GetKeyByIndex(ByRef $oSL, $INDEX)
If Not IsObj($oSL) Then Return SetError(1, 0, -1)
If $INDEX < 0 Or $INDEX > $oSL.Count - 1 Then Return SetError(2, 0, -1)
Return $oSL.GetKey($INDEX)
EndFunc ;==>_ObjSortedList_GetKeyByIndex;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _ObjSortedList_GetKeyByVal($oSL, $VALUE)
; Description: Gibt ein 2D-Array mit allen Vorkommen eines Wertes zurück.
; Array[0][0]=Anzahl Vorkommen, Array[0][0]=VALUE, Array[n][0]=Index, Array[n][1]=Schlüssel.
; Parameter(s): $oSL SortedList-Objekt
; $VALUE Wert dessen Vorkommen ermittelt wird
; Return Value(s):
; Erfolg: Array mit Schlüssel(n) und Index(es) des gefragten wertes
; Fehler: -1 @error 1 $oSL ist kein Objekt
; 2 Wert nicht in Liste
; Author(s): BugFix
;===============================================================================
Func _ObjSortedList_GetKeyByVal(ByRef $oSL, $VALUE)
If Not IsObj($oSL) Then Return SetError(1, 0, -1)
If Not $oSL.ContainsValue($VALUE) Then Return SetError(2, 0, -1)
Local $aOut[1][2] = [[0, $VALUE]]
For $i = 0 To $oSL.Count - 1
If $oSL.GetByIndex($i) == $VALUE Then
ReDim $aOut[UBound($aOut) + 1][2]
$aOut[0][0] += 1 ; Anzahl
$aOut[UBound($aOut) - 1][0] = $i ; Index in Sorted-List
$aOut[UBound($aOut) - 1][1] = $oSL.GetKey($i) ; Schlüssel
EndIf
Next
Return $aOut
EndFunc ;==>_ObjSortedList_GetKeyByVal;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _ObjSortedList_GetValByIndex($oSL, $INDEX)
; Description: Gibt den Wert für einen Index zurück.
; Parameter(s): $oSL SortedList-Objekt
; $INDEX Index
; Return Value(s):
; Erfolg: Wert an Indexposition
; Fehler: -1 @error 1 $oSL ist kein Objekt
; 2 Index nicht in Liste
; Author(s): BugFix
;===============================================================================
Func _ObjSortedList_GetValByIndex(ByRef $oSL, $INDEX)
If Not IsObj($oSL) Then Return SetError(1, 0, -1)
If $INDEX < 0 Or $INDEX > $oSL.Count - 1 Then Return SetError(2, 0, -1)
Return $oSL.GetByIndex($INDEX)
EndFunc ;==>_ObjSortedList_GetValByIndex;===============================================================================
[/autoit]
; Function Name: _ObjSortedList_GetValByKey($oSL, $KEY)
; Description: Gibt den Wert für einen Schlüssel zurück.
; Parameter(s): $oSL SortedList-Objekt
; $KEY Schlüssel
; Return Value(s):
; Erfolg: Wert des Schlüssels
; Fehler: -1 @error 1 $oSL ist kein Objekt
; 2 Schlüssel nicht in Liste
; Author(s): BugFix
;===============================================================================
Func _ObjSortedList_GetValByKey(ByRef $oSL, $KEY)
If Not IsObj($oSL) Then Return SetError(1, 0, -1)
If Not $oSL.ContainsKey($KEY) Then Return SetError(2, 0, -1)
Return $oSL.GetByIndex($oSL.IndexOfKey($KEY))
EndFunc ;==>_ObjSortedList_GetValByKeyBsp. Skript
[autoit]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include-once
#include <Array.au3>
#include 'objSortedList.au3';== Sortierte Liste erstellen
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$oSL = _ObjSortedList_Create();== Schlüssel-Wertpaare hinzufügen
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_ObjSortedList_AddPair($oSL, 'Tomate', 5)
_ObjSortedList_AddPair($oSL, 'Birne', 2)
_ObjSortedList_AddPair($oSL, 'Apfel', 3)
_ObjSortedList_AddPair($oSL, 'Zwetschke', 20)
_ObjSortedList_AddPair($oSL, 'Erdbeere', 10);== Anzahl Schlüssel-Wertpaare ausgeben
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
ConsoleWrite('Anzahl Paare: ' & _ObjSortedList_Count($oSL) & @CRLF & @CRLF);== alle Schlüssel-Wertpaare als Array(2D) ausgeben
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$aList = _ObjSortedList_AsArray($oSL)
_ArrayDisplay($aList, 'Schlüssel-Wert Paare');== alle Schlüssel als Array(1D) ausgeben
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$aList = _ObjSortedList_AsArray($oSL, 1)
_ArrayDisplay($aList, 'Schlüssel');== alle Werte als Array(1D) ausgeben
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$aList = _ObjSortedList_AsArray($oSL, 2)
_ArrayDisplay($aList, 'Werte');== Wert für SchlüsselName ausgeben
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
ConsoleWrite('_GetValByKey(Apfel): ' & _ObjSortedList_GetValByKey($oSL, 'Apfel') & @CRLF & @CRLF);== Wert für Index ausgeben
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
ConsoleWrite('_GetValByIndex(4): ' & _ObjSortedList_GetValByIndex($oSL, 4) & @CRLF & @CRLF);== SchlüsselName für Index ausgeben
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
ConsoleWrite('Schlüsselname an Index(3): ' & _ObjSortedList_GetKeyByIndex($oSL, 3) & @CRLF & @CRLF);== Liste auf Schlüssel prüfen
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
ConsoleWrite('Schlüssel "Birne" enthalten? ' & _ObjSortedList_ContainsKey($oSL, 'Birne') & @CRLF)
ConsoleWrite('Schlüssel "Kohlrabi" enthalten? ' & _ObjSortedList_ContainsKey($oSL, 'Kohlrabi') & @CRLF & @CRLF);== Liste auf Werte prüfen
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
ConsoleWrite('Wert "10" enthalten? ' & _ObjSortedList_ContainsVal($oSL, 10) & @CRLF)
ConsoleWrite('Wert "17" enthalten? ' & _ObjSortedList_ContainsVal($oSL, 17) & @CRLF & @CRLF);== Wert über SchlüsselNamen ändern
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_ObjSortedList_SetValByKey($oSL, 'Apfel', 6)
ConsoleWrite('neuer Wert "Apfel": ' & _ObjSortedList_GetValByKey($oSL, 'Apfel') & @CRLF & @CRLF);==Wert über Index ändern
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_ObjSortedList_SetValByIndex($oSL, 1, 18)
ConsoleWrite('neuer Wert (1): ' & _ObjSortedList_GetValByIndex($oSL, 1) & @CRLF & @CRLF);== SchlüsselIndex abfragen
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
ConsoleWrite('Index(Erdbeere): ' & _ObjSortedList_GetIndexOfKey($oSL, 'Erdbeere') & @CRLF & @CRLF);== SchlüsselName ändern über Name
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
ConsoleWrite('vor Änderung(by Name): existiert "Erdbeere"? ' & _ObjSortedList_ContainsKey($oSL, 'Erdbeere') & @CRLF)
_ObjSortedList_RenameKeyByName($oSL, 'Erdbeere', 'Himbeere')
ConsoleWrite('nach Änderung: existiert "Erdbeere"? ' & _ObjSortedList_ContainsKey($oSL, 'Erdbeere') & @CRLF)
ConsoleWrite('nach Änderung: existiert "Himbeere"? ' & _ObjSortedList_ContainsKey($oSL, 'Himbeere') & @CRLF & @CRLF);== SchlüsselName ändern über Index
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$oldKey = _ObjSortedList_GetKeyByIndex($oSL, 3)
ConsoleWrite('vor Änderung(by Index): Schlüssel an Index(3)? ' & $oldKey & @CRLF)
_ObjSortedList_RenameKeyByIndex($oSL, 3, 'Banane')
ConsoleWrite('nach Änderung: existiert "' & $oldKey & '"? ' & _ObjSortedList_ContainsKey($oSL, $oldKey) & @CRLF)
ConsoleWrite('nach Änderung: existiert "Banane"? ' & _ObjSortedList_ContainsKey($oSL, 'Banane') & @CRLF & @CRLF);== Eintrag nach Schlüsselnamen löschen und Speicher freigeben
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
ConsoleWrite('vor Löschen(by Name): existiert "Apfel"? ' & _ObjSortedList_ContainsKey($oSL, 'Apfel') & @CRLF)
_ObjSortedList_RemoveByKey($oSL, 'Apfel', True)
ConsoleWrite('nach Löschen: existiert "Apfel"? ' & _ObjSortedList_ContainsKey($oSL, 'Apfel') & @CRLF & @CRLF);== Eintrag nach Index löschen und Speicher nicht freigeben
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$oldKey = _ObjSortedList_GetKeyByIndex($oSL, 0)
ConsoleWrite('vor Löschen(by Index): Schlüssel an Index(0)? ' & $oldKey & @CRLF)
_ObjSortedList_RemoveByIndex($oSL, 0)
ConsoleWrite('nach Löschen: existiert "' & $oldKey & '"? ' & _ObjSortedList_ContainsKey($oSL, $oldKey) & @CRLF & @CRLF);== Klon der Liste erstellen und als Array ausgeben
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$oClone = _ObjSortedList_Clone($oSL)
$aList = _ObjSortedList_AsArray($oClone)
_ArrayDisplay($aList, 'Schlüssel-Wert Paare');== Inhalt Ursprungsliste leeren (Liste bleibt als Objekt erhalten)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_ObjSortedList_Clear($oSL)
ConsoleWrite('Anzahl nach Löschen Liste: ' & _ObjSortedList_Count($oSL) & @CRLF & @CRLF);== Array mit Schlüssel-Wertpaaren erstellen
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
;== Schlüssel müssen EINMALIG sein, doppelte(mehrfache) Schlüssel werden ignoriert
;== Indexwerte mehrfacher Schlüssel werden zurückgegeben
Local $a[7][2] = [['Tomate',5],['Birne',2],['Tomate',5],['Apfel',3],['Zwetschke',20],['Erdbeere',20],['Apfel',5]]
Local $ret = _ObjSortedList_AddArray($oSL, $a)
If @error = 3 Then ConsoleWrite('Mehrfach-Schlüssel im Quell-Array an Index: ' & $ret & @CRLF)
$aList = _ObjSortedList_AsArray($oSL)
_ArrayDisplay($aList, 'gefüllt aus Array');== Ausgabe Index ($a[n][0]), Schlüsselname ($a[n][1]) eines bestimmten Wertes
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
;== Anzahl gleicher Werte in ($a[0][0]), Wert in ($a[0][1])
$aSameVal = _ObjSortedList_GetKeyByVal($oSL, 20)
_ArrayDisplay($aSameVal, 'gleiche Werte')If MsgBox(262180,"Test INI","Das Bsp.-Skript erzeugt jetzt die Datei:" & @CRLF & _
[/autoit] [autoit][/autoit] [autoit]
@ScriptDir & '\Test.ini' & @CRLF & "Soll die Datei erstellt werden?") = 6 Then;== SortedList in INI speichern
[/autoit] [autoit][/autoit] [autoit]
_ObjSortedList_WriteToIni($oSL, @ScriptDir & '\Test.ini', 'SortedList')
If @error Then
ConsoleWrite('Schreiben in INI fehlgeschlagen.' & @CRLF)
Else
ConsoleWrite('Schreiben in INI erfolgreich.' & @CRLF);== SortedList aus INI erstellen
[/autoit] [autoit][/autoit] [autoit]
$oFromINI = _ObjSortedList_ReadFromIni(@ScriptDir & '\Test.ini', 'SortedList')
$aList = _ObjSortedList_AsArray($oFromINI)
_ArrayDisplay($aList, 'erstellt aus INI')
EndIfEndIf
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]If MsgBox(262180,"Test FILE","Das Bsp.-Skript erzeugt jetzt die Datei:" & @CRLF & _
[/autoit] [autoit][/autoit] [autoit]
@ScriptDir & '\TestSort.lst' & @CRLF & "Soll die Datei erstellt werden?") = 6 Then;== SortedList in Textdatei speichern (je Zeile: SCHLÜSSEL DELIMITER WERT @CRLF)
[/autoit] [autoit][/autoit] [autoit]
_ObjSortedList_WriteToFile($oSL, @ScriptDir & '\TestSort.lst')
If @error Then
ConsoleWrite('Schreiben in FILE fehlgeschlagen.' & @CRLF)
Else
ConsoleWrite('Schreiben in FILE erfolgreich.' & @CRLF);== SortedList aus FILE erstellen
[/autoit] [autoit][/autoit] [autoit]
$oFromFile = _ObjSortedList_ReadFromFile(@ScriptDir & '\TestSort.lst')
$aList = _ObjSortedList_AsArray($oFromFile)
_ArrayDisplay($aList, 'erstellt aus FILE')
EndIfEndIf
[/autoit] -
Wie sieht es den mit BeforeSave aus?
Das ist ähnlich, wie beim Makro. Die Sub 'BeforeSave' wird ausgeführt, wenn sie existiert. Du könntest evtl. in diese Sub eine Bedingung einbauen, unter der die Sub abgebrochen wird. Mußt du dir eine entsprechende Bedingung schaffen, die dazu geeignet ist. -
Als Aufbau empfiehlt sich deine Hauptseite als Naviagationszentrum zu verwenden und Links auf andere Themen(seiten) zu verwenden. Man kann zwar alles auch auf einer Seite unterbringen - aber dann wird unnütz immer alles geladen, auch wenn nur Teilbereiche gelesen werden sollen.
Übrigens -- witzig auf deiner Seite: Kontakt/BugFix

-
Laut Quelltext steht die nicht drinnen....
Ist ja klar. Auf der Hauptübersichtsseite findest du nur die Grobinfos. Für Details muß bei jedem auf die Unterseite gewechselt werden. Von dort sind dann die Daten abrufbar.
-
Weiß jemand ob ich eine Excel-Tab so öffnen kann, daß die in der Tab enthaltenen Makros nicht ausgeführt werden?
Wenn das Makro beim Öffnen der Tabelle automatisch ausgeführt wird, hat diese folgende Eigenschaft:
ActiveWorkbook.RunAutoMacros = xlAutoActivateD.h., die beim Laden der Tabelle vorliegende Eigenschaft bestimmt, ob das Makro gestartet wird oder nicht.
Du kannst also nicht die Tabelle laden und dann Ändern auf nicht Ausführen.
Wenn du das möchtest, solltest du das Makro erst nach einer Abfrage (Ja/Nein) starten, das kannst du dann programmtechnisch steuern und der User muß halt einen Klick mehr machen.Falls du doch Aktivieren/Deaktivieren testen möchtest, so wird es eingesetzt:
[autoit]Const $xlAutoActivate = 3
[/autoit]
Const $xlAutoDeactivate = 4
$oExcel.ActiveWorkbook.RunAutoMacros($xlAutoDeactivate) -
_IsPressed ist i.A. die Lösung, die man nur dann nimmt, wenn nix anderes geht (also eigentlich nie :D).
Mein Tipp: Verwende WM_MOUSEMOVE, als wParam kannst du dann auf MK_LBUTTON (Const Wert=1) abprüfen. MK_LBUTTON bedeutet: Maus bewegt und Links geklickt. -
Ich hab mir mal das Manual angeschaut.
Dort wird die Syntax für dtcfg so angegeben:
Die Funktion hat also 6 Parameter:
- dtcfg ==> der Funktionsname
- <command> ==> Befehlsparameter für diese Funktion (z.B. attach oder setmode)
- <display#> ==> die Nummer des anzusprechenden Displays
- [arg1 - 4] ==> 4 optionale ParameterDatentyp für command und display# könnte man als 'str' und 'int' annehmen. Schwieriger wird es bei den optionalen Parametern. Denn wenn man mal im Manual blättert, werden sowohl Strings als auch Integerwerte an diese Argumente übergeben.

Aber was spricht eigentlich dagegen, die Befehle als Kommandozeile aufzurufen?
z.B. "rundll32.exe NvCpl.dll,dtcfg setmode 2 1024 768 32 75" mit Run() aufrufen.