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

  • _IEDocReadHTML

    • BugFix
    • 13. April 2013 um 10:45

    Wenn du zwischendurch per Hand rumklickst, stimmt in deinem Skript logischerweise die Zuordnung zum IE nicht mehr, da mit _IEAttach auf die vorige Webseite referenziert wurde.
    Du mußt also den Bezug aktualisieren (Referenz auf die jetzt aktuelle Seite holen) oder besser nicht per Hand rumklicken, sondern alles automatisieren.

  • INIReadSections, Loop, Combo - Array?

    • BugFix
    • 13. April 2013 um 10:41

    Oops - da hatte ich zu schnell geschrieben. Habe nur den Text gelesen und das etwas fehlinterpretiert. Naja - ist ja noch früh am Morgen. :whistling:

  • INIReadSections, Loop, Combo - Array?

    • BugFix
    • 13. April 2013 um 10:18
    Zitat von skavenger

    Durch das obige Script werden die Sections-Namen aus der INI ausgelesen und als Data-Werte an die Como übergeben.


    Wärst du da nicht besser bedient mit:

    [autoit]

    IniReadSectionNames

    [/autoit]
  • QR-Code Creator

    • BugFix
    • 13. April 2013 um 10:01

    Jo, das ist korrekt. Die Codes sehen optisch unterschiedlich aus - haben aber denselben Inhalt! (einfach mal den QR-Code Scanner draufhalten) ;)
    Das liegt an den verwendeten Qualitätsleveln. In Wikipedia wurde mit dem niedrigsten Level verschlüsselt, die Dll im Skript nutzt als Standard imho ein höheres Qualitätslevel = mehr Bildpunkte.

  • QR-Code Creator

    • BugFix
    • 13. April 2013 um 09:03

    ????
    Laut Wikipedia wird NICHTS ausgegeben und mein Skript gibt etwas aus? Muß ich das verstehen? ?(

    Btw.: Mein Skript generiert keinen QR-Code selber, sondern nutzt dafür die quricol32.dll. Und diese basiert auf dem QR Code Encoder von Kentaro Fukuchi.

  • Multiarray zusammenfassen

    • BugFix
    • 13. April 2013 um 08:52

    Also der Begriff "Multiarray" ist in AutoIt nicht vorhanden und beschreibt auch nicht dein vorhaben.
    Du hast zwei 2-Dimensionale Array, die du zu einem 2-Dimensionalen Array zusammenfügen möchtest unter Erweiterung einer "Spalte" in der die Quelle hinterlegt wird.
    Das einfachste ist die Arrays jeweils um eine Spalte zu erweitern ( ReDim ) und in die neue Spalte den von dir gewünschten Quellnamen bei jedem Element einzutragen ( For-Schleife ). Dann hast du zwei Arrays die du nur noch zusammenfügen mußt, wie bereits von Alcros beschrieben. Oder du nutzt meine Funktion _Array2DJoin() ;)

  • QR-Code Creator

    • BugFix
    • 13. April 2013 um 08:32
    Zitat von Acanis

    Wenn man für die schwarzen "Blöcke" kleine Grafiken nehmen könnte oder z.B. noch weiße Punkte (wirkt cool) in die Blöcke setzen könnte ;)...
    Und/oder einfach alles direkt einfärben :)


    Ob es cool wäre ist vom Betrachter abhängig - auf jeden Fall wäre es ziemlich bescheuert, da dann der Code nicht mehr (sicher) gelesen werden kann. :D Alle Barcodetypen basieren auf dem maximalen Kontrast zwischen Codeelement und Umgebung. Daher auch immer ein weißes Label mit schwarzem Code. ;)

  • Nullen vor einer Zahl einfügen (als String)

    • BugFix
    • 12. April 2013 um 16:08

    Eine ganz simple Methode neben StringFormat ist z.B. folgendes:

    [autoit]


    $zahl = ...
    ;== 3-stellig mit Vornullen
    $zahl = StringRight("00" & $zahl, 3)

    [/autoit]
  • _IELoadWait

    • BugFix
    • 12. April 2013 um 07:58

    _IELoadWait dient nicht dazu auf den Ladestatus zu prüfen. Diese Funktion lädt eine Seite und stoppt das Skript solange, bis die Seite fertig geladen ist.
    Auf eine bestehende IE-Instanz kannst du mit

    [autoit]

    _IEAttach

    [/autoit]

    zugreifen. Mit der Funktion

    [autoit]

    _IEPropertyGet

    [/autoit]

    hast du Zugriff auf die Eigenschaften der IE-Instanz. Inwiefern damit auch der Seitenladestatus angezeigt werden kann ("readystate" klingt zumindest plausibel) weiß ich nicht, da ich mit IE nicht arbeite.

  • Error allocating memory

    • BugFix
    • 9. April 2013 um 14:32

    Hast du mal getestet, ob

    [autoit]

    $check = Ping($start,250)

    [/autoit]

    tatsächlich nach 250 ms abgebrochen wird? Nach meiner Erfahrung schert sich der Aufruf einen Dreck um den Zeitparameter. Die Funktion wird erst als beendet betrachtet, wenn Ping tatsächlich nach mehreren Versuchen die IP nicht erreicht. Und das dauert dann min 1 s. Inzwischen hat Adlib bereits den nächsten Funktionsaufruf angeschoben. Das ganze überlagert sich dann weiter und weiter.
    Wäre für mich eine schlüssige Erklärung.
    Ich halte es für einen weniger guten Weg, die anderen Rechner anzupingen, um zu wissen ob sie erreichbar sind. Einfach den Spieß umdrehen: Auf alle Clients läuft ein Programm, dass jede Minute aufwacht und ein PONG an den Server sendet. :thumbup:

  • Applikation mehrfach mit Parametern öffnen

    • BugFix
    • 9. April 2013 um 13:53

    Ich hatte mir für selbiges Problem einen Launcher geschrieben, der beim Menüaufruf die markierte(n) Dateien ausliest und dann anch Bedarf weiterverarbeitet.

    Hier die Funktion zum Auslesen des Explorers:

    Spoiler anzeigen
    [autoit]

    ;===============================================================================
    ; Function Name....: _ActiveExplorer_GetFilesSelected
    ; Description......: Erstellt ein Array mit
    ; - Anzahl der markierten Dateien
    ; - dem Pfad des aktiven Explorerfensters und
    ; - dem/den Pfad/en der markiert/en Datei/en
    ; Parameter(s).....: keine
    ; Requirement(s)...: offenes Explorerfenster
    ; Return Value(s)..: Array mit den Daten, $a[0] = Anzahl, $a[1] = Ordnerpfad, $a[2..] = Dateiname
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _ActiveExplorer_GetFilesSelected()
    Local $oShell = ObjCreate("Shell.Application")
    Local $oExplorer, $sPath, $oFolderView, $iCount = 0, $sSelectedFiles = '', $n = 2
    For $i = 0 To $oShell.Windows.Count - 1
    $oExplorer = $oShell.Windows($i)
    $sPath = StringReplace(StringReplace(StringTrimLeft($oExplorer.LocationURL, 8), '%20', ' '), '/', '\')
    If WinGetTitle('[ACTIVE]') = $sPath Then ExitLoop
    Next
    $oFolderView = $oExplorer.Document.SelectedItems()
    $iCount = $oFolderView.Count
    Local $aOut[$iCount +2]
    $aOut[0] = $iCount
    $aOut[1] = $sPath
    If $iCount = 0 Then
    ReDim $aOut[3]
    $aOut[2] = 'NO FILE SELECT'
    Else
    For $oFolderItem In $oFolderView
    $aOut[$n] = $oFolderItem.Name
    $n += 1
    Next
    EndIf
    Return $aOut
    EndFunc ; ==>_ActiveExplorer_GetFilesSelected

    [/autoit]

    Edit:
    Hier mal das ganze Skript, ich hatte Menüpunkte im Kontextmenü eingefügt um Werte(Dateinamen / Pfade) in die Zwischenablage zu kopieren.

    Spoiler anzeigen
    [autoit]


    ; ===============================================================
    ; == Registrieren im Kontextmenü des Explorers für alle Dateien
    ; == Schlüssel: HKEY_CLASSES_ROOT\*\shell\CMD
    ; == Wert: (Standard) = "Name_des_Menüeintrages"
    ; == Schlüssel: HKEY_CLASSES_ROOT\*\shell\CMD\COMMAND
    ; == Wert: (Standard) = "Pfad_zum_kompilierten_Skript"
    ; ===============================================================

    [/autoit] [autoit][/autoit] [autoit]

    #Region - TimeStamp
    ; 2011-09-11 13:37:20 v 1.0
    #EndRegion - TimeStamp
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #Include <Misc.au3>

    [/autoit] [autoit][/autoit] [autoit]

    _Singleton(@ScriptName) ; == sonst erfolgt Skriptaufruf für jede markierte Datei

    [/autoit] [autoit][/autoit] [autoit]

    Opt('GUIOnEventMode', 1)
    Local $aDeskSize[2] = [@DesktopWidth,@DesktopHeight]
    Local $aMPos = MouseGetPos()
    Local $x = $aMPos[0], $y = $aMPos[1]
    Local $iWGUI = 120, $iHGUI = 85
    If $x + $iWGUI > $aDeskSize[0] Then
    $x = $aDeskSize[0] - $iWGUI
    EndIf
    If $y + $iHGUI > $aDeskSize[1] Then
    $y = $aDeskSize[1] - $iHGUI
    EndIf
    Local $GUI = GUICreate('', $iWGUI, $iHGUI, $x, $y, BitOR($WS_POPUP,$WS_BORDER))
    GUISetOnEvent($GUI_EVENT_CLOSE, '_close')
    Local $cLV = GuiCtrlCreateListView('LV', 0, 0, $iWGUI, $iHGUI, BitOR($LVS_NOCOLUMNHEADER,$LVS_SINGLESEL), BitOR($LVS_EX_GRIDLINES,$LVS_EX_FULLROWSELECT))
    _GUICtrlListView_SetColumnWidth(GUICtrlGetHandle($cLV), 0, $LVSCW_AUTOSIZE_USEHEADER)
    Local $cFull = GUICtrlCreateListViewItem('kpl. Dateipfade', $cLV)
    GUICtrlSetOnEvent(-1, '_OnClick')
    Local $cFile = GUICtrlCreateListViewItem('Dateinamen', $cLV)
    GUICtrlSetOnEvent(-1, '_OnClick')
    Local $cPath = GUICtrlCreateListViewItem('Pfadname', $cLV)
    GUICtrlSetOnEvent(-1, '_OnClick')
    Local $cSize = GUICtrlCreateListViewItem('Dateigrößen', $cLV)
    GUICtrlSetOnEvent(-1, '_OnClick')

    [/autoit] [autoit][/autoit] [autoit]

    ; == Markierte Datei(en) auslesen
    Global $aSelected = _ActiveExplorer_GetFilesSelected()
    Switch $aSelected[0]
    Case 0
    Exit MsgBox(0, 'Achtung', 'Keine Datei ausgewählt im Ordner' & @CRLF & $aSelected[1])
    Case 1
    GUICtrlSetData($cFull, 'kpl. Dateipfad')
    GUICtrlSetData($cFile, 'Dateiname')
    GUICtrlSetData($cSize, 'Dateigröße')
    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(50)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _close()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _OnClick()
    Local $sRet = ''
    Switch @GUI_CtrlId
    Case $cFull
    For $i = 2 To $aSelected[0]+1
    $sRet &= $aSelected[1] & '\' & $aSelected[$i] & @CRLF
    Next
    Case $cFile
    For $i = 2 To $aSelected[0]+1
    $sRet &= $aSelected[$i] & @CRLF
    Next
    Case $cPath
    $sRet = $aSelected[1]
    Case $cSize
    For $i = 2 To $aSelected[0]+1
    Local $iSize = FileGetSize($aSelected[1] & '\' & $aSelected[$i])
    $sRet &= $aSelected[$i] & @TAB & $iSize & @CRLF
    Next
    EndSwitch
    ClipPut($sRet)
    _close()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ; Function Name....: _ActiveExplorer_GetFilesSelected
    ; Description......: Erstellt ein Array mit
    ; - Anzahl der markierten Dateien
    ; - dem Pfad des aktiven Explorerfensters und
    ; - dem/den Pfad/en der markiert/en Datei/en
    ; Parameter(s).....: keine
    ; Requirement(s)...: offenes Explorerfenster
    ; Return Value(s)..: Array mit den Daten, $a[0] = Anzahl, $a[1] = Ordnerpfad, $a[2..] = Dateiname
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _ActiveExplorer_GetFilesSelected()
    Local $oShell = ObjCreate("Shell.Application")
    Local $oExplorer, $sPath, $oFolderView, $iCount = 0, $sSelectedFiles = '', $n = 2
    For $i = 0 To $oShell.Windows.Count - 1
    $oExplorer = $oShell.Windows($i)
    $sPath = StringReplace(StringReplace(StringTrimLeft($oExplorer.LocationURL, 8), '%20', ' '), '/', '\')
    If WinGetTitle('[ACTIVE]') = $sPath Then ExitLoop
    Next
    $oFolderView = $oExplorer.Document.SelectedItems()
    $iCount = $oFolderView.Count
    Local $aOut[$iCount +2]
    $aOut[0] = $iCount
    $aOut[1] = $sPath
    If $iCount = 0 Then
    ReDim $aOut[3]
    $aOut[2] = 'NO FILE SELECT'
    Else
    For $oFolderItem In $oFolderView
    $aOut[$n] = $oFolderItem.Name
    $n += 1
    Next
    EndIf
    Return $aOut
    EndFunc ; ==>_ActiveExplorer_GetFilesSelected

    [/autoit]
  • "Best of" Bilder Script

    • BugFix
    • 8. April 2013 um 18:03
    Zitat von HassanMullah

    Einen kleine Bitte hätte ich noch, da es mir "auf die Schnelle" noch schwer fällt, mich in den Code einzulesen.

    Zitat von HassanMullah

    Ich hoffe es ist nicht zu unverschämt, wenn ich Euch bitte sowas noch einzubauen.


    Da stellt sich mir ernsthaft die Frage: Was treibst du hier im Forum? Bist du überhaupt gewillt deinen Wissensstand zu erweitern oder willst du nur auf die Betteltour die Arbeit von anderen erledigen lassen?

    Und ja, ich finde es verdammt unverschämt, wenn man andere für sich werkeln läßt!

    Aus diesem Grunde:

    Dieser Thread wird vorerst geschlossen, damit der TE die Muße hat, das Skript von Oscar zu lesen, zu verstehen und mit dem Plus an Wissen kann er auch ohne unsere Hilfe den Rest erledigen.
    Btw.: Tauchen in den nächsten Tagen Threads zur selben Thematik auf, kannst du sicher sein, dass diese geschlossen werden.

    [CLOSED]

  • _StringBetween problem

    • BugFix
    • 7. April 2013 um 13:47

    Egal, wie du es löst (bei _StringBetween ist das Endelement logischerweise nicht @CRLF sondern @CR, da immer nur ein Zeichen der Begrenzer ist) - du wirst immer ein Array erhalten und kannst erst im zweiten Schritt auf den Inhalt zugreifen. Was also spricht gegen StringSplit als einfachste Variante?

  • Container.au3 >> Dynamisches Array

    • BugFix
    • 7. April 2013 um 13:25

    - Warum erstellst du das Array Global?
    Die Zugriffe erfolgen ausschließlich über die Funktion, somit wäre es sinnvoll das Array als Local Static zu erstellen. Allerdings hast du dann keine dynamische Größenveränderung des "Mutter-Arrays" mehr, da statisch erstellte Arrays in der Dimension nicht verändert werden können. Aber die Anzahl Container auf vorab 128 (oder ähnlich) festzulegen sollte eigentlich ausreichen. Die enthaltenen Element-Array sind ja weiterhin dynamisch.

    - Beim Hinzufügen eines Elementes ist nicht ersichtlich, welchen Index es im internen Array erhält (Return True). Insofern kann man nicht wieder auf das Element zugreifen. Hier solltest du den Array-Index zurückgeben.
    - "Container Löschen" ist etwas missverständlich, denn er existiert ja weiter als 1-Element-Array. Unter Löschen würde ich das kpl. Entfernen verstehen. - Besser wäre "Löschen aller Inhalte des Containers"

    Alternativ könntest du den Zugriff noch variabel gestalten, indem du als Index auch zusätzlich einen String zuläßt. Intern in einem Dictionary (wiederum Local Static) verweist du dann mit "String=Index" auf den Array Index.

    Da hier Array-In-Array verwendet wird, was leider keinen direkten Zugriff erlaubt, sondern immer das extrahieren des internen Arrays erfordert, wäre vielleicht auch interessant, dieselbe Funktion über ein Array mit ArrayList-Elementen zu realisieren.
    Ich habe das mal testweise erstellt. Es sind noch nicht alle Fehlerabfragen enthalten, aber zur Funktionsdemonstration reicht es:

    Spoiler anzeigen
    [autoit]

    $C1 = _Container()
    $C2 = _Container()
    ConsoleWrite('Anzahl Container: ' & _Container(0, -1, Default, 3) & @LF)

    [/autoit] [autoit][/autoit] [autoit]

    $index1_1 = _Container($C1, -1, 'Neuer Wert1')
    ConsoleWrite("'" & _Container($C1, $index1_1) & "' in $C1 an Index=" & $index1_1 & " angefügt" & @LF)

    [/autoit] [autoit][/autoit] [autoit]

    $index1_2 = _Container($C1, -1, 'Neuer Wert2')
    ConsoleWrite("'" & _Container($C1, $index1_2) & "' in $C1 an Index=" & $index1_2 & " angefügt" & @LF)

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite('Anzahl Werte in $C1: ' & _Container($C1, -1, Default, 3) & @LF)

    [/autoit] [autoit][/autoit] [autoit]

    _Container($C1, $index1_2, 'Geänderter Wert2')
    ConsoleWrite('Wert nach Änderung: ''' & _Container($C1, $index1_2) & "'" & @LF)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $index2_1 = _Container($C2, -1, 'Neuer Wert1')
    ConsoleWrite("'" & _Container($C2, $index2_1) & "' in $C2 an Index=" & $index2_1 & " angefügt" & @LF)

    [/autoit] [autoit][/autoit] [autoit]

    $index2_2 = _Container($C2, -1, 'Neuer Wert2')
    ConsoleWrite("'" & _Container($C2, $index2_2) & "' in $C2 an Index=" & $index2_2 & " angefügt" & @LF)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Container($indexContainer=0, $indexValue=-1, $Value=Default, $iFlag=0) ; $iFlag: 1=Delete Item/Delete Container, 2=Delete All Item/Container, 3=Count Item in Container/Count Container
    Local Static $aContainer[256] = [0] ; Statische Variablen können nicht mit ReDim verändert werden! Deshalb vordefinieren
    Local Static $indexLast = 0

    [/autoit] [autoit][/autoit] [autoit]

    Select
    Case $indexContainer = 0 And $iFlag = 0 ; neuer Container
    $aContainer[0] += 1
    $indexLast += 1
    $aContainer[$indexLast] = _ObjAListCreate() ; ArrayList als Element erstellen
    Return $indexLast ; Rückgabe Index Container

    [/autoit] [autoit][/autoit] [autoit]

    Case $indexContainer > 0 And $indexValue = -1 And $iFlag = 1 ; Delete Container
    $aContainer[$indexContainer] = 0 ; dadurch ändert sich Index der verbleibenden Container nicht
    $aContainer[0] -= 1

    [/autoit] [autoit][/autoit] [autoit]

    Case $indexContainer > 0 And $indexValue = -1 And $iFlag = 2 ; Delete All Container
    $aContainer[0] = 0
    For $i = 1 To UBound($aContainer) -1
    $aContainer[$i] = 0
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Case $indexContainer = 0 And $indexValue = -1 And $iFlag = 3 ; Count Container
    Return $aContainer[0]

    [/autoit] [autoit][/autoit] [autoit]

    Case $indexContainer > 0 And $iFlag = 3 ; Count Item in Container
    Return $aContainer[$indexContainer].Count

    [/autoit] [autoit][/autoit] [autoit]

    Case IsKeyword($Value) And $iFlag = 0 ; Get Value
    Return _ObjAListGetItem($aContainer[$indexContainer], $IndexValue)

    [/autoit] [autoit][/autoit] [autoit]

    Case IsKeyword($Value) And $iFlag = 1 ; Delete Value
    _ObjAListDelByIndex($aContainer[$indexContainer], $IndexValue)

    [/autoit] [autoit][/autoit] [autoit]

    Case IsKeyword($Value) And $iFlag = 2 ; Delete All Value
    _ObjAListClear($aContainer[$indexContainer])

    [/autoit] [autoit][/autoit] [autoit]

    Case Not IsKeyword($Value) And $indexValue = -1 ; Add Item
    Return _ObjAListAdd($aContainer[$indexContainer], $Value) ; Rückgabe Index aus ArrayList

    [/autoit] [autoit][/autoit] [autoit]

    Case Not IsKeyword($Value) And $indexValue > -1 ; Set Value
    _ObjAListSetItem($aContainer[$indexContainer], $indexValue, $Value)

    [/autoit] [autoit][/autoit] [autoit]

    EndSelect

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;==================================================================================================
    ; Name: _ObjAListCreate()
    ; Return: Erfolg: Handle des Arraylist-Objektes
    ; Fehler: -1
    ; Fehlerwert: 1 Objekt konnte nicht erzeugt werden
    ;==================================================================================================
    Func _ObjAListCreate()
    Local $obj = ObjCreate("System.Collections.ArrayList")
    If (Not IsObj($obj)) Then
    Return SetError(1, 0, -1)
    Else
    Return $obj
    EndIf
    EndFunc ;==>_ObjAListCreate

    [/autoit] [autoit][/autoit] [autoit]

    ;==================================================================================================
    ; Name: _ObjAListAdd($ObjList, $Value)
    ; Parameter: $ObjList - Handle des Arraylist-Objektes
    ; $Value - Wert
    ; Return: Erfolg: Index des angefügten Item
    ; Fehler: -1
    ; Fehlerwert: 1 Objekt existiert nicht
    ; 2 Wert ohne Inhalt übergeben
    ; 3 Aktion fehlgeschlagen
    ;==================================================================================================
    Func _ObjAListAdd(ByRef $ObjList, $VALUE = '')
    If (Not IsObj($ObjList)) Then Return SetError(1, 0, -1)
    If $VALUE = '' Then Return SetError(2, 0, -1)
    $ObjList.Add($VALUE)
    If @error Then Return SetError(3, 0, -1)
    Return $ObjList.Count - 1
    EndFunc ;==>_ObjAListAdd

    [/autoit] [autoit][/autoit] [autoit]

    ;==================================================================================================
    ; Name: _ObjAListGetItem($ObjList, $Index)
    ; Parameter: $ObjList - Handle des Arraylist-Objektes
    ; $Index - Index des zurückzugebenden Wertes
    ; Return: Erfolg: 0
    ; Fehler: -1
    ; Fehlerwert: 1 Objekt existiert nicht
    ; 4 Index außerhalb Bereich
    ;==================================================================================================
    Func _ObjAListGetItem(ByRef $ObjList, $Index)
    If (Not IsObj($ObjList)) Then Return SetError(1, 0, -1)
    If ($Index = -1) Or ($Index > $ObjList.Count - 1) Then Return SetError(4, 0, -1)
    Return $ObjList.Item($Index)
    EndFunc ;==>_ObjAListGetItem

    [/autoit] [autoit][/autoit] [autoit]

    ;==================================================================================================
    ; Name: _ObjAListSetItem($ObjList, $Index, $Value)
    ; Parameter: $ObjList - Handle des Arraylist-Objektes
    ; $Index - Index des zurückzugebenden Wertes
    ; $Value - Neuer Wert des Item
    ; Return: Erfolg: 0
    ; Fehler: -1
    ; Fehlerwert: 1 Objekt existiert nicht
    ; 4 Index außerhalb Bereich
    ;==================================================================================================
    Func _ObjAListSetItem(ByRef $ObjList, $Index, $Value)
    If (Not IsObj($ObjList)) Then Return SetError(1, 0, -1)
    If ($Index = -1) Or ($Index > $ObjList.Count - 1) Then Return SetError(4, 0, -1)
    $ObjList.Item($Index) = $Value
    Return 0
    EndFunc ;==>_ObjAListGetItem

    [/autoit] [autoit][/autoit] [autoit]

    ;==================================================================================================
    ; Name: _ObjAListDelByIndex($ObjList, $Index)
    ; Parameter: $ObjList - Handle des Arraylist-Objektes
    ; $Index - Index des zu löschenden Wertes
    ; Return: Erfolg: 0
    ; Fehler: -1
    ; Fehlerwert: 1 Objekt existiert nicht
    ; 3 Aktion fehlgeschlagen
    ; 4 Index außerhalb Bereich
    ;==================================================================================================
    Func _ObjAListDelByIndex(ByRef $ObjList, $Index = -1)
    If (Not IsObj($ObjList)) Then Return SetError(1, 0, -1)
    If ($Index = -1) Or ($Index > $ObjList.Count - 1) Then Return SetError(4, 0, -1)
    $ObjList.RemoveAt($Index)
    If @error Then Return SetError(3, 0, -1)
    Return 0
    EndFunc ;==>_ObjAListDelByIndex

    [/autoit] [autoit][/autoit] [autoit]

    ;==================================================================================================
    ; Name: _ObjAListClear($ObjList)
    ; Parameter: $ObjList - Handle des Arraylist-Objektes
    ; Return: Erfolg: 0
    ; Fehler: -1
    ; Fehlerwert: 1 Objekt existiert nicht
    ; 3 Aktion fehlgeschlagen
    ;==================================================================================================
    Func _ObjAListClear(ByRef $ObjList)
    If (Not IsObj($ObjList)) Then Return SetError(1, 0, -1)
    $ObjList.Clear
    If @error Then Return SetError(3, 0, -1)
    Return 0
    EndFunc ;==>_ObjAListClear

    [/autoit]

    Edit:
    Es ist zwar praktisch, wenn man nur eine Funktion aufrufen muß und über die Parameter(-kombination) dann unterschiedliche Funktionen ausgeführt werden - aber so richtig übersichtlich ist es nicht.
    Was spricht dagegen, die Aufrufe für die Einzelaktionen in extra Funktionen auszulagern ( Contaier_New, Container_SetVal, Container_GetVal, .... )? Das erleichtert die Lesbarkeit des Skripts ungemein. :D
    Alternativ wäre auch möglich eine Funktion zu verwenden mit einem Cmd-String als Parameter " Func Container($sCmd, $param1, $param2,...) " und als $sCmd= "new", "addVal", "getVal", "setVal" usw. ;)

  • Problem mit _GUICtrlTreeView_FindItem _GUICtrlTreeView_SelectItem

    • BugFix
    • 5. April 2013 um 23:41

    Kann dein Skript nicht testen, aber was ich sehe:
    - Du nutzt die Funktion _GUICtrlTreeView_SelectItem mit einem String? ($sTVItem), es wird aber das Handle des zu selektierenden Item erwartet.
    - Du verwendest die Ctrl-ID, nach meiner Erfahrung ist auch beim Treeview das Handle angebrachter.
    - Und nur als Tipp: probiere als 3.ten Parameter $TVGN_CARET, mir gefällt es besser ;)

  • Email / Hyperlink anklicken

    • BugFix
    • 5. April 2013 um 08:47
    Zitat von autoBert

    @Mod/Admin: bitte wegen mangenlder Selbstbeteiligung schliessen


    :D Kann ich zwar nachvollziehen, aber das geht dann doch etwas über unsere eigenen Regeln hinaus.

    @TE:
    Wenn du im Internet durch Rumgeklicke Geld verdienen möchtest, ist das deine Sache.
    Wenn das rechtlich zulässig ist, interessiert es mich auch nicht weiter.
    Aber:
    Ich sehe keinen Grund, dass wir dir dabei helfen Geld zu verdienen. Wir sind nicht die Wohlfahrt und unser Einsatz hier im Forum ist für umme.
    Und solange du kein Skript lieferst an dem du ein Problem hast, ist dieses hier tatsächlich der falsche Platz für deine Frage.

    Es liegt nun an dir, ob und wie es weiter geht. Die entsprechenden Entscheidungswege wurden dir hier aufgezeigt.

  • in ein Fremdes Programm per Control einen Button setzen

    • BugFix
    • 5. April 2013 um 08:30
    Zitat von WhiteLion

    Also bei mir geht das bzw die verlinkten beispiele von dir nicht Andy,

    Wir danken für die äußerst präzise Problemdarstellung und empfehlen den Kauf einer Kristallkugel. :whistling:

  • TrackMouseEvent für ein GUI Control

    • BugFix
    • 3. April 2013 um 20:23

    Darüber bin ich auch schon gestolpert, sowie du von der reinen GUI-Fläche auf ein Control wechselst bekommst du keine Infos mehr von WM_MOUSEMOVE.
    Im Moment habe ich keine Idee, wie man das elegant lösen kann.

  • 1. Versuch mit DLLCALL

    • BugFix
    • 1. April 2013 um 19:25

    Evtl. Aufrufkonvention beachten? ('cdecl' statt Standard 'stdcall')

  • IE in GUI Klicke

    • BugFix
    • 1. April 2013 um 16:42

    Es ist als grenzwertig zu betrachten und ermöglicht einen Verstoß gegen die AGB des Betreibers.
    Insofern: CLOSED

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™