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

  • Test Array erstellen

    • BugFix
    • 27. Februar 2008 um 11:01

    Hi,
    wenn man mit Arrays arbeitet, braucht man ja auch Testdaten zum Probieren.
    Bisher habe ich dann jedesmal in einer Schleife ein Testarray befüllt. Sind zwar (bei 1D) nur 3 Zeilen Code, aber das war mir dann doch zuviel :D
    Deshalb habe ich eine allgemeine Funktion zur Erstellung von 1D/2D-Arrays mit Testdaten geschaffen.
    Vielleicht für den Einen oder Anderen von Nutzen.

    Verringert den Aufruf auf:

    [autoit]

    $a1Dim = _GetTestArray(10)
    $a2Dim = _GetTestArray(10, 5)

    [/autoit]
    _GetTestArray()
    [autoit]

    ;==================================================================================================
    ; Funktion _GetTestArray($iUbDim1 [, $iUbDim2=0, $sValue='Wert ']])
    ; Beschreibung Gibt ein 1D- oder 2D-Array mit Testdaten zurück
    ; Parameter $iUbDim1 Anzahl Elemente 1. Dimension
    ; optional $iUbDim2 Anzahl Elemente 2. Dimension; wird kein Wert oder Wert < 2 übergeben,
    ; dann wird ein 1D-Array erzeugt; Standard: 0 = 1D-Array
    ; optional $sValue Standard: "Wert $i" bzw. "Wert $i/ $k"; $i bzw $k werden immer angefügt
    ; Autor BugFix ([email='bugfix@autoit.de'][/email])
    ;==================================================================================================
    Func _GetTestArray($iUbDim1, $iUbDim2=0, $sValue='Wert ')
    Local $i, $k, $2ndDim = False
    Local $aOut[$iUbDim1]
    If $iUbDim2 > 1 Then
    $2ndDim = True
    ReDim $aOut[$iUbDim1][$iUbDim2]
    EndIf
    For $i = 0 To $iUbDim1 -1
    If $2ndDim Then
    For $k = 0 To $iUbDim2 -1
    $aOut[$i][$k] = $sValue & $i & '/ ' & $k
    Next
    Else
    $aOut[$i] = $sValue & $i
    EndIf
    Next
    Return $aOut
    EndFunc ;==>_GetTestArray

    [/autoit]

    Dateien

    _GetTestArray.au3 1,16 kB – 362 Downloads
  • So etwas wie Filereadline auch mit guictrlcreateinput oder list?

    • BugFix
    • 26. Februar 2008 um 19:50

    Was für ne schwere Geburt :D
    Du möchtest aus einem Edit mit mehreren Zeilen eine einzelne auslesen.
    Mit GUICtrlRead den ganzen Inhalt lesen und mit StringSplit(@LF) in einzelne Zeilen splitten.
    Oder schau mal in die neuen UDF, ich glaub da ist noch mehr möglich.

  • UDF-Sammlung Array Alternativen

    • BugFix
    • 26. Februar 2008 um 19:34

    Oh man, da stand ich aber auf der Leitung :D
    Klar, völlig richtig, da hab ich es vergessen.

  • Reihenfolge MultiSelect

    • BugFix
    • 26. Februar 2008 um 07:43

    Die seltsame Auswahlreihenfolge in Windows hat mich auch schon immer sehr gewundert, da kein Schema erkennbar ist.
    Ich denke für dein Problem bleibt dir nur der Ausweg, einen eigenen FileOpenDialog zu basteln.
    - ausgewählte Dateien in eine Liste laden
    - in gewünschter Reihenfolge anklicken
    - bei jedem Klick den ListenIndex registrieren
    - in gespeicherter Indexreihenfolge verarbeiten

  • UDF-Sammlung Array Alternativen

    • BugFix
    • 25. Februar 2008 um 23:09

    Hmm, interessanter Aspekt.
    Ich deklariere zwar aus alter Gewohnheit alle Variablen, setze aber nicht die Option. :whistling:
    Nur ist mir der Mechanismus von MustDeclareVars nicht richtig klar.
    Eigentlich hatte ich das unterschwellig im Hinterkopf als ich in den Funktionen alle Variablen deklarierte.
    Wenn MustDeclareVars gesetzt ist, sollte es doch schauen ob alle Variablen deklariert sind und meckern, wenn es nicht der Fall ist.
    Hierbei müßte es also stumm bleiben... :wacko:

  • UDF-Sammlung Array Alternativen

    • BugFix
    • 25. Februar 2008 um 22:39

    Jo, die Variable wird nur lokal deklariert, ihr Inhalt wird ja mit dem Namespace der übernehmenden Variablen festgelegt.
    Sehe da kein Problem.

  • UDF-Sammlung Array Alternativen

    • BugFix
    • 25. Februar 2008 um 22:17

    Hi,
    nachdem ich bereits zum Dictionary-Objekt als Array-Pendent eine Funktionssammlung erstellt hatte, habe ich mich nun darangesetzt und auch die anderen Arrayalternativen in eine Sammlung aufgenommen. Damit alles komplett ist, habe ich hier nochmal die Dictionary-Funktionen mit erfaßt.

    Mein ausdrücklicher Dank gilt an dieser Stelle AspirinJunkie :thumbup:
    Durch seine gute Vorarbeit hier hat er mich zum Einen inspiriert und zum Anderen die Arbeit spürbar erleichtert 8o .
    Ohne seinen Beitrag hätte ich mich wahrscheinlich nicht so schnell mit diesen Varianten befaßt.

    Obwohl ich weitestgehend getestet habe, bin ich mir nicht ganz sicher ob noch Bugs versteckt sind ;-). Solltet ihr welche entdecken sagt mir bitte Bescheid. :whistling:

    Hier eine Auflistung aller Funktionen der Sammlung:

    Alternative Array-Funktionen


    ============================= OBJEKT 'Scripting.Dictionary' =======================================

    _ObjDictCreate(Modus)
    Erzeugt ein Dictionary Objekt im Binär- (default) oder Textmodus
    Gibt das Handle des Objektes zurück

    _ObjDictAdd(Objekt, Schlüssel, Wert)
    Fügt einem Dictionary Objekt ein Schlüssel-Wert Paar hinzu

    _ObjDictGetValue(Objekt, Schlüssel)
    Liest den Wert für einen Schlüssel aus

    _ObjDictSetValue(Objekt, Schlüssel)
    Setzt einen neuen Wert für einen Schlüssel

    _ObjDictCount(Objekt)
    Gibt die Anzahl der Schlüssel-Wert Paare zurück

    _ObjDictSearch(Objekt, Schlüssel)
    Prüft ob der Schlüssel existiert, liefert 'TRUE' wenn gefunden

    _ObjDictDeleteKey(Objekt, Schlüssel)
    Löscht den angegebenen Schlüssel (und dessen Wert)
    Wird statt eines Schlüsselnamens ein Leerstring übergeben,
    werden alle Schlüssel gelöscht (Standard)

    _ObjDictList(Objekt)
    Eine GUI mit einem ListView zeigt alle Schlüssel-Wert Paare

    _IniReadSectionToObjDict(Objekt, INI-Pfad, Sektion)
    Liest die angegebene INI-Sektion in das Objekt
    Gibt die Anzahl der gelesenen Schlüssel-Wert Paare zurück

    _IniWriteSectionFromObjDict(Objekt, INI-Pfad, Sektion)
    Schreibt die Schlüssel-Wert Paare des Objekts in die angegebene Sektion
    der INI-Datei
    Gibt die Anzahl der geschriebenen Schlüssel-Wert Paare zurück

    _FileReadToObjDict(Objekt, TextDatei-Pfad, Seperator)
    Liest aus einer Textdatei alle Schlüssel-Wert Paare zeilenweise ein (1 Paar/Zeile)
    Standard-Seperator ist '|', kann hier angepaßt werden
    Gibt die Anzahl der gelesenen Schlüssel-Wert Paare zurück

    _FileWriteFromObjDict(Objekt, TextDatei-Pfad, Seperator, Overwrite)
    Schreibt die Schlüssel-Wert Paare des Objekts in die angegebene Datei (1 Paar/Zeile).
    Mit Overwrite='TRUE' (Standard) wird die angegebene Datei, falls sie bereits existiert,
    überschrieben. Mit 'FALSE' wird an eine bestehende Datei angehängt.
    Standard-Seperator ist '|', kann hier angepaßt werden.
    Gibt die Anzahl der geschriebenen Schlüssel-Wert Paare zurück

    ===================================================================================================

    _ObjGetType($Object)
    Gibt die exakte Objektbezeichnung des verwendeten NET-Framework Objektes zurück

    Alle folgenden Funktionen erfordern das NET-Framework.

    ======================== OBJEKT 'System.Collections.Hashtable' ====================================

    _ObjHashCreate()
    Erzeugt ein Hashtable Objekt
    Gibt das Handle des Objektes zurück

    _ObjHashAdd(Objekt, Schlüssel, Wert)
    Fügt einem Hashtable Objekt ein Schlüssel-Wert Paar hinzu

    _ObjHashGetValue(Objekt, Schlüssel)
    Liest den Wert für einen Schlüssel aus

    _ObjHashCount(Objekt)
    Gibt die Anzahl der Schlüssel-Wert Paare zurück

    _ObjHashSearch(Objekt, Schlüssel)
    Prüft ob der Schlüssel existiert, liefert 'TRUE' wenn gefunden

    _ObjHashDeleteKey(Objekt, Schlüssel)
    Löscht den angegebenen Schlüssel (und dessen Wert)
    Wird statt eines Schlüsselnamens '' übergeben,
    werden alle Schlüssel gelöscht (Standard)

    =========================== OBJEKT 'System.Collections.ArrayList' =================================

    _ObjAListCreate()
    Erzeugt ein Arraylist-Objekt

    _ObjAListAdd(Objekt, Wert)
    Fügt einen Wert zum Arraylist-Objekt hinzu

    _ObjAListAddColl(Objekt, Collektion, Trennzeichen)
    Fügt ein 1D-Array oder durch Trennzeichen getrennten String dem Objekt hinzu

    _ObjAListSort(Objekt, Richtung)
    Sortiert alle Elemente des Objekts (Standard: aufsteigend)

    _ObjAListToLine(Objekt, Trennzeichen)
    Gibt einen String mit allen Elementen, getrennt durch Trennzeichen (Standard '|'), zurück

    _ObjAListGetItem(Objekt, Index)
    Gibt den Inhalt an der Indexposition zurück

    _ObjAListDelByName(Objekt, Wert)
    Löscht den ersten gefundenen Eintrag, der mit Wert übereinstimmt

    _ObjAListDelByIndex(Objekt, Index)
    Löscht den Eintrag am übergebenen Index

    _ObjAListInsert(Objekt, Wert, Index)
    Fügt einen Wert am gegebenen Index ein

    _ObjAListCount(Objekt)
    Gibt die Anzahl der Elemente im Objekt zurück

    _ObjAListSearch(Objekt, Wert)
    Gibt TRUE zurück, wenn Wert im Objekt enthalten, sonst FALSE

    _ObjAListClear(Objekt)
    Löscht alle Elemente aus der Arrayliste

    _ObjAListAddRange(Objekt Arraylist, Objekt das hinzugefügt werden soll)
    Fügt ein (gleichartiges) Objekt an die Arraylist an

    _ObjAListToArray(Objekt)
    Übergibt alle Elemente der Arraylist an ein 1D-Array

    _ObjAListGetIndex(Objekt, Wert)
    Gibt den Index des ersten gefundenen Eintrags zurück, der mit Wert übereinstimmt

    _ObjAListGetRange(Objekt, Index, Anzahl)
    Gibt ab Indexposition eine Anzahl Elemente als Objekt zurück

    _ObjAListInsertRange(Objekt, EinfügeObjekt, Index)
    Fügt an der Indexposition ein (gleichartiges) Objekt ein

    _ObjAListLastIndexOf(Objekt, Wert, Von, Bis)
    Gibt den nullbasierten Index des letzten Vorkommens eines Werts in der ArrayList bzw. in einem Abschnitt davon zurück.

    _ObjAListRemoveRange(Objekt, Index, Anzahl)
    Löscht eine Anzahl Elemente ab Indexposition
    Wird keine Anzahl übergeben, werden ab Indexposition alle restlichen Elemente gelöscht

    _ObjAListReverse(Objekt, Von, Bis)
    Kehrt die Reihenfolge der Elemente im angegebenen Bereich um.

    _ObjAListSetRange(Objekt, EinfügeObjekt, Index)
    Kopiert die Elemente einer Auflistung (gleichartiges Objekt) über einen Bereich von Elementen in der ArrayList.

    =========================== OBJEKT 'System.Collections.Queue' =====================================

    _ObjQueueCreate()
    Erzeugt ein Queue-Objekt

    _ObjQueueAdd(Objekt, Wert)
    Fügt einem Queue-Objekt einen Wert hinzu

    _ObjQueueSearch(Objekt, Wert)
    Prüft auf Vorkommen des Wertes im Queue

    _ObjQueueGetFirst(Objekt)
    Gibt das erste Element aus dem Queue zurück, es verbleibt im Queue

    _ObjQueuePopFirst(Objekt)
    Gibt das erste Element aus dem Queue zurück, UND löscht es aus dem Queue

    _ObjQueueCount(Objekt)
    Gibt die Anzahl der Elemente des Queue zurück

    _ObjQueueToArray(Objekt)
    Gibt ein 1D-Array mit den Elementen des Queue zurück

    =========================== OBJEKT 'System.Collections.Stack' =====================================

    _ObjStackCreate()
    Erzeugt ein Stack-Objekt

    _ObjStackAdd(Objekt, Wert)
    Fügt einem Stack-Objekt einen Wert hinzu

    _ObjStackSearch(Objekt, Wert)
    Prüft auf Vorkommen des Wertes im Stack

    _ObjStackGetFirst(Objekt)
    Gibt das erste Element aus dem Stack zurück, es verbleibt im Stack

    _ObjStackPopLast(Objekt)
    Gibt das Letzte Element aus dem Stack zurück, UND löscht es aus dem Stack

    _ObjStackCount(Objekt)
    Gibt die Anzahl der Elemente des Stack zurück

    _ObjStackToArray(Objekt)
    Gibt ein 1D-Array mit den Elementen des Stack zurück

    ================================ SONSTIGE FUNKTIONEN ==============================================

    _ArrayToList()
    Konvertiert ein 1-Dimensionales Array in eine Liste, Queue oder Stack
    oder ein 2-Dimensionales Array in eine Hash-Tabelle

    _FileReadToList(Datei)
    Liest die angegebene Datei in ein Arraylist-Objekt

    _FileListToList(Pfad, Filter, Flag)
    Listet alle Dateien und Ordner eines Pfades (arbeitet wie Dir mit dem Schalter /B)

    ===================================================================================================

    Edit:
    Ich habe für das Objekt ArrayList eine weitere Funktion erstellt - _ObjAListAddColl()
    Damit lassen sich 1D-Arrays oder mit Delimiter getrennte Stringelemente der Arraylist hinzufügen.
    Die Funktion ist noch nicht in die .au3 eingefügt, deshalb hier der Quelltext:

    _ObjAListAddColl()
    [autoit]

    ;==================================================================================================
    ; Name: _ObjAListAddColl($ObjList, $Coll, $Delim='|')
    ; Parameter: $ObjList - Handle des Arraylist-Objektes
    ; $Coll - 1D-Array od. mit $Delim getrennter String (Standard '|')
    ; optional $Delim - Trennzeichen bei Stringübergabe
    ; Return: Erfolg: 0
    ; Fehler: -1
    ; Fehlerwert: 1 Objekt existiert nicht
    ; 2 Array ist kein 1D-Array
    ; 3 Aktion fehlgeschlagen
    ;==================================================================================================
    Func _ObjAListAddColl(ByRef $ObjList, $Coll, $Delim = '|')
    If (Not IsObj($ObjList)) Then Return SetError(1, 0, -1)
    If IsArray($Coll) Then
    If UBound($Coll, 0) > 1 Then Return SetError(2, 0, -1)
    For $i = 0 To UBound($Coll) -1
    $ObjList.Add($Coll[$i])
    If @error Then Return SetError(3, 0, -1)
    Next
    Else
    If Not StringInStr($Coll, $Delim) Then
    $ObjList.Add($Coll)
    If @error Then Return SetError(3, 0, -1)
    Else
    Local $aTmp = StringSplit($Coll, $Delim)
    For $i = 1 To UBound($aTmp) -1
    $ObjList.Add($aTmp[$i])
    If @error Then Return SetError(3, 0, -1)
    Next
    EndIf
    EndIf
    Return 0
    EndFunc ;==>_ObjAListAddColl

    [/autoit]

    Dateien

    UDF_ArrayAlternatives.au3 61,9 kB – 931 Downloads
  • Mein kleines Verknüpfungstool

    • BugFix
    • 24. Februar 2008 um 14:18

    Hi,
    es wäre schon günstig, wenn du genau beschreibst, was dein Skript bewirkt.
    "Probiert doch einfach" ist keine gute Empfehlung.
    Wenn du den Code nicht in einem Spoiler postest, hänge ihn bitte als au3-File an - dann kann man ihn auch online anschauen ohne vorherigen Download.

  • TAN - Verwaltung

    • BugFix
    • 24. Februar 2008 um 09:12

    Danke Bernd :thumbup: für die Mühe, die ich dir gemacht habe :rofl:

  • pixelsearchfunktion+mausklick

    • BugFix
    • 23. Februar 2008 um 21:03

    Also ich versteh das nicht. Auch wenn ich neu in einer Scriptsprache bin muß ich mir doch über die Programmlogik im Klaren sein. Ich weiß doch, was ich erreichen möchte, oder etwa nicht....?
    Pixelsearch liefert das Ergebnis ob die Farbe gefunden wurde oder nicht. Also muß direkt im Anschluß das Ergebnis der Funktion ausgewertet werden für die Entscheidung Mausklick ja oder nein. Ist doch logo 'ne ? ;)

  • pixelsearchfunktion+mausklick

    • BugFix
    • 23. Februar 2008 um 20:50

    If-Abfrage: wenn gefunden dann Mausklick

  • Zu variable dazuadrieren

    • BugFix
    • 23. Februar 2008 um 17:57
    [autoit]

    $coord = pixelsearch(0, 0, 1151, 863, 0xEB1609)
    $coord[1] += 35

    [/autoit]
  • ArrayMore.au3

    • BugFix
    • 23. Februar 2008 um 16:08

    Hier mal noch ein Skript zum Testen für
    _Array2DPop, _Array2DPush
    s. 1. Post

    Spoiler anzeigen
    [autoit]

    #include <array.au3>

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

    Dim $a[10], $a2[10][3], $aIn[4], $aIn2[4][3]
    ; Arrays füllen
    For $i = 0 To UBound($a) -1
    If $i < 4 Then
    $aIn[$i] = 'In-Array ' & $i+1
    For $k = 0 To UBound($aIn2, 2) -1
    $aIn2[$i][$k] = 'In-Array ' & $i+1 & ' / ' & $k+1
    Next
    EndIf
    $a[$i] = 'Wert ' & $i+1
    For $k = 0 To UBound($a2, 2) -1
    $a2[$i][$k] = 'Wert ' & $i+1 & ' / ' & $k+1
    Next
    Next
    ; POP 1D-Array
    _ArrayDisplay($a, '1-Dim')
    _ArrayDisplay(_Array2DPop($a), 'Letzter Wert')
    _ArrayDisplay($a, 'Array 1-Dim nach POP')
    ; POP 2D-Array
    _ArrayDisplay($a2, '2-Dim')
    _ArrayDisplay(_Array2DPop($a2), 'Letzter Wert')
    _ArrayDisplay($a2, 'Array 2-Dim nach POP')
    ; PUSH 1D-Array Einzelwert v. rechts
    _ArrayDisplay($a, 'Array 1-Dim vor PUSH')
    _Array2DPush($a, 'Einzel v. Ende')
    _ArrayDisplay($a, 'Array 1-Dim nach PUSH v. rechts')
    ; PUSH 1D-Array Einzelwert v. links
    _Array2DPush($a, 'Einzel v. Anfang', 1)
    _ArrayDisplay($a, 'Array 1-Dim nach PUSH v. links')
    ; PUSH 1D-Array Array v. rechts
    _Array2DPush($a, $aIn)
    _ArrayDisplay($a, 'Array 1-Dim nach PUSH Array v. rechts')
    ; PUSH 1D-Array Array v. links
    _Array2DPush($a, $aIn, 1)
    _ArrayDisplay($a, 'Array 1-Dim nach PUSH Array v. links')
    ; PUSH 2D-Array Array v. rechts
    _ArrayDisplay($a2, 'Array 2-Dim vor PUSH')
    _Array2DPush($a2, $aIn2)
    _ArrayDisplay($a2, 'Array 2-Dim nach PUSH Array v. rechts')
    ; PUSH 2D-Array Array v. links
    _Array2DPush($a2, $aIn2, 1)
    _ArrayDisplay($a2, 'Array 2-Dim nach PUSH Array v. links')

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

    ;===============================================================================
    ;
    ; Function Name: _Array2DPop($ARRAY)
    ; Description: Gibt das letzte Element eines 1D/2D-Arrays zurück und löscht dieses
    ; gleichzeitig vom Array
    ; Return: Erfolg: 1D = 1D-Array mit dem letzten Element
    ; 2D = 1D-Array mit jeweils einem Eintrag pro Spalte des letzten Elements
    ; Array[0] enthält die Anzahl der Elemente
    ; Fehler: Leerstring und @error = 1 ; Variable ist kein Array
    ; Author(s): Cephas <cephas at clergy dot net>
    ; Modified: BugFix ([email='bugfix@autoit.de'][/email]) ==> 2D-Anpassung
    ;
    ;===============================================================================
    Func _Array2DPop(ByRef $ARRAY)
    Local $LastValue = ''
    Local $UBound2nd = UBound($ARRAY,2), $aOut[1]
    If @error = 1 Then ; kein Array
    SetError(1)
    Return ''
    ElseIf @error = 2 Then ; Array hat keine 2. Dim
    $UBound2nd = 1
    $aOut[0] = $ARRAY[UBound($ARRAY) -1]
    $LastValue = $aOut
    Else
    ReDim $aOut[$Ubound2nd+1]
    $aOut[0] = 0
    For $i = 0 To $Ubound2nd -1
    $aOut[$i+1] = $ARRAY[UBound($ARRAY)-1][$i]
    $aOut[0] += 1
    Next
    $LastValue = $aOut
    EndIf
    If UBound($ARRAY) = 1 Then
    $ARRAY = ''
    Else
    If $UBound2nd = 1 Then
    ReDim $ARRAY[UBound($ARRAY) -1]
    Else
    ReDim $ARRAY[UBound($ARRAY) -1][$UBound2nd]
    EndIf
    EndIf
    Return $LastValue
    EndFunc ;==>_Array2DPop

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

    ;=====================================================================================
    ;
    ; Function Name: _Array2DPush($ARRAY, $Value [, $Direction=0])
    ; Description: Fügt einem Array Werte hinzu ohne die Arraygröße zu verändern.
    ; Werte können vom Ende (Standard) oder vom Anfang des Arrays zugefügt werden.
    ; Entsprechend der Anzahl der einzufügenden Werte wird eine gleiche Anzahl Elemente
    ; aus dem Array 'herausgeschoben' (ge-pusht)
    ; Parameter(s): $ARRAY - Array
    ; $Value - Der einzufügende Wert, oder mehrere Werte als Array
    ; $Direction - 0 = Linksseitiges Schieben (Einfügen vom Ende) (Standard)
    ; 1 = Rechtsseitiges Schieben (Einfügen vom Anfang)
    ; Requirement(s): None
    ; Return Value(s): On Success - Returns 1
    ; On Failure - -1 und SetError
    ; @error = 1 kein Array
    ; @error = 2 Einfügearray größer als Originalarray
    ; @error = 3 Einfügearray und Originalarray haben unterschiedliche Dimensionen @error = 4 $Value ist Einzelwert, 2D-Array erwartet
    ; @error = 5 $Value ist 1D-Array, 2D-Array erwartet
    ; Author(s): Helias Gerassimou(hgeras)
    ; Modified: BugFix ([email='bugfix@autoit.de'][/email]) ==> 2D-Anpassung
    ;
    ;======================================================================================
    Func _Array2DPush(ByRef $ARRAY, $Value, $Direction=0)
    Local $i, $j, $k
    Local $arStatVal = IsArray($Value)
    Local $UBound1st = UBound($ARRAY)
    If @error = 1 Then ; kein Array
    SetError(1)
    Return -1
    EndIf
    Local $UBound2nd = UBound($ARRAY,2)
    If @error = 2 Then ; Array hat keine 2. Dim
    If $arStatVal Then ; Einfügewert ist Array
    Local $UbValue = UBound($Value)
    If $UbValue > $UBound1st Then ; Einfügearray größer als Originalarray
    SetError(2)
    Return -1
    EndIf
    If UBound($Value, 2) > 0 Then
    SetError(3) ; hier keine 2. Dim zulässig
    Return -1
    EndIf
    For $k = 0 To $UbValue -1
    If $Direction = 0 Then
    For $i = 0 To ($UBound1st -2)
    $ARRAY[$i] = $ARRAY[$i+1]
    Next
    $i = ($UBound1st -1)
    $ARRAY[$i] = $Value[$k]
    Else
    For $i = ($UBound1st -1) To 1 Step -1
    $ARRAY[$i] = $ARRAY[$i-1]
    Next
    $ARRAY[$i] = $Value[$UbValue -1 -$k]
    EndIf
    Next
    Else ; Einfügewert ist Einzelwert
    If $Direction = 0 Then ; einfügen Einzelwert vom Ende
    For $i = 1 To $UBound1st -1
    $ARRAY[$i-1] = $ARRAY[$i]
    Next
    $ARRAY[$UBound1st-1] = $Value
    Else ; einfügen Einzelwert vom Anfang
    For $i = $UBound1st-1 To 1 Step -1
    $ARRAY[$i] = $ARRAY[$i-1]
    Next
    $ARRAY[0] = $Value
    EndIf
    EndIf
    Else ; Array ist 2D
    Local $UbValue2nd = UBound($Value, 2)
    If @error = 1 Then ; Einfügewert ist kein Array
    SetError(4)
    Return -1
    ElseIf @error = 2 Then ; Einfügearray nicht 2D
    SetError(5)
    Return -1
    ElseIf UBound($Value) > $UBound1st Then ; Einfügearray größer als Originalarray
    SetError(2)
    Return -1
    ElseIf $Ubound2nd <> $UbValue2nd Then ; 2. Dim nicht identische Größe
    SetError(3)
    Return -1
    EndIf
    Local $UbValue = UBound($Value)
    For $k = 0 To $UbValue -1
    If $Direction = 0 Then
    For $i = 0 To ($UBound1st -2)
    For $j = 0 To $UBound2nd -1
    $ARRAY[$i][$j] = $ARRAY[$i+1][$j]
    Next
    Next
    $i = ($UBound1st -1)
    For $j = 0 To $UBound2nd -1
    $ARRAY[$i][$j] = $Value[$k][$j]
    Next
    Else
    For $i = ($UBound1st -1) To 1 Step -1
    For $j = 0 To $UBound2nd -1
    $ARRAY[$i][$j] = $ARRAY[$i-1][$j]
    Next
    Next
    For $j = 0 To $UBound2nd -1
    $ARRAY[$i][$j] = $Value[$UbValue -1 -$k][$j]
    Next
    EndIf
    Next
    EndIf
    Return 1
    EndFunc ;==>_Array2DPush

    [/autoit]
  • "markiertes" input rausfinden^^

    • BugFix
    • 23. Februar 2008 um 14:21

    Mit

    [autoit]

    ControlGetFocus()

    [/autoit]

    erhältst du den ClassName des Controls, das den Fokus besitzt.
    Der ClassName ist aber nicht identisch mit der ID. Du müßtest also ein Array führen, welches ID und zugehörige ClassName führt.
    Inputfelder gehören zu ClassName: Edit
    Das erste (erstellte) Input ist dann Edit1, das zweite Edit2 usw.
    Edit-Controls gehören natürlich auch zu dieser Kategorie.
    Wichtig ist die Reihenfolge, in der die Controls erstellt werden. Das bestimmt dann die fortlaufende Nr. (Instance) hinter der ClassName-Bezeichnung.

  • Schwierigkeiten mit der Listbox...

    • BugFix
    • 20. Februar 2008 um 22:54

    Verwende doch:

    Zitat

    _IniReadSectionToObjDict(Objekt, INI-Pfad, Sektion)
    Liest die angegebene INI-Sektion in das Objekt
    Gibt Anzahl gelesener Paare zurück

    _IniWriteSectionFromObjDict(Objekt, INI-Pfad, Sektion)
    Schreibt die Schlüssel-Wert Paare des Objekts in die angegebene Sektion
    der INI-Datei
    Gibt Anzahl geschriebener Paare zurück

    von hier: UDF-Sammlung: Objekt Dictionary

  • Random-Number-Generator

    • BugFix
    • 20. Februar 2008 um 22:39

    Oscar : Bei soviel Lob mich *gebauchpinselt* fühl. 8o

  • Enable/Disable Checkbox

    • BugFix
    • 20. Februar 2008 um 20:14

    Natürlich gehts auch noch kürzer ;)

    Spoiler anzeigen
    [autoit]

    #include<GUIConstants.au3>
    Dim $state1 = $GUI_ENABLE
    Dim $state2 = $GUI_ENABLE

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

    GUICreate("Checkboxen", 175, 150)
    $Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 10, 40)
    $Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 10, 70)
    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    Select
    Case $msg = $Checkbox1
    $state2 = BitXOR($state2, $GUI_ENABLE, $GUI_DISABLE)
    GUICtrlSetState($Checkbox2, $state2)
    Case $msg = $Checkbox2
    $state1 = BitXOR($state1, $GUI_ENABLE, $GUI_DISABLE)
    GUICtrlSetState($Checkbox1, $state1)
    EndSelect
    Wend

    [/autoit]
  • Mirc überwachung von einem Chan in einem kleinen Fenster

    • BugFix
    • 20. Februar 2008 um 19:21

    Nicht nur in Arbeit ;) , mein IRC-Bot ( Gucki heißt er :D ) ist schon voll lebensfähig.
    Was er kann:
    - Reaktion auf neuen User im Channel od. Verlassen des Channels
    - Aktionen von Usern ( /me Aktion ) werden kommentiert
    - Reaktion auf Stichworte
    - dumme Sprüche, wenn zu lange "ge-idled" wird
    - ich kann ihn 'sprechen' lassen, indem ich ihm eine PN schicke, die er dann als eigenen Text wiedergibt - kommt voll gut, dadurch wird er richtig lebendig :rofl:
    - natürlich User-Mode setzen (kick & ban) - auch das muß manchmal sein, z.B. bei Bad-Words

    Wenn ihr möchtet, schick ich ihn mal in unseren Autoit IRC-Chat.

    Den Basis-Clienten findet ihr hier: Basis-Client für IRC-Chat

  • Classic Games

    • BugFix
    • 18. Februar 2008 um 21:04

    Mein absoluter Favorit war (und ist es auch noch heute) ein 3-D Tetris-Game auf DOS-Ebene: Blockout von California Dreams.

    [Blockierte Grafik: http://www.3dtris.de/blockout_essay/bl6.gif][Blockierte Grafik: http://www.3dtris.de/blockout_essay/bl12.gif]

    [Blockierte Grafik: http://www.3dtris.de/blockout_essay/bl19.gif]

    Inzwischen gibt es auch Versionen für Windows und Linux.
    Neben Schwierigkeitstufen (mehrdimensionale Segmente) konnte man auch die Ebenengröße anpassen (Standard 4 x 4).
    Die Bedienung erforderte auch einige Eingewöhnung, aber wenn man es einmal kann, vergißt man es nie mehr. ;)
    6 Tasten zum Drehen, die 4 Pfeiltasten und Space für Fallenlassen.

    Suchtfaktor seeeehhhhr groß. :D

  • Neue Idee für µIt

    • BugFix
    • 17. Februar 2008 um 20:51

    Schade, kann ich leider nicht mitmachen. Stecke mitten in Vorbereitung zur QM-Zertifizierung. Naja - nächstes mal wieder.

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™