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

  • mehrere Checkboxen überprüfen

    • BugFix
    • 26. Oktober 2007 um 10:05

    Das ist Bitlogik.
    Wenn du 3 in die Potenzen von 2 zerlegst sind das:
    1* 2^0 = 1 und
    1* 2^1 = 2

    Alle zugewiesenen Werte sind Potenzen von 2. Somit kannst du aus einer Summe jederzeit feststellen welche 2-er Potenzen zur Summenbildung geführt haben.
    Denn eine kleinere Ganzzahlzerlegung als mit 2-er Potenzen geht nunmal nicht.

    Du darfst auch nicht die Funktion _CBRead() mit der Switch-Auswertung durcheinanderwürfeln.
    _CBRead() diente hier nur dazu um optisch sofort das Ergebnis der markierten Boxen sichtbar zu machen. Und $str &= 3 bedeutet, dass die BitAnd-Überprüfung ergibt, dass die Checkbox Nr.3, mit dem Wert 4 markiert ist.
    Die Variable $str führt nur die Namen der markierten Boxen zusammen und schreibt sie in das Inputfeld.
    Für die normale Arbeit benötigst du die Funktion _CBRead() nicht, diente wirklich nur der Veranschaulichung.

  • Schmutziges Keyboard

    • BugFix
    • 26. Oktober 2007 um 00:29

    GtaSpider :
    Dann mußt du aber die maus loslassen :P
    Und auch das ist mir schon zu viel ;)

  • Variablen einlesen

    • BugFix
    • 26. Oktober 2007 um 00:18
    Zitat

    Was um alles in der Welt ist nun ein Array und wie gehe ich damit um?


    Da du es nicht weißt, ist es korrekt, die Frage zu stellen - aaaber: stelle sie z.B. im Tutorial,Wiki, Google damit du erst mal die Basics weißt.
    Programmspezifische Fragen klären wir gern.

    Aber da ich am Schreiben bin ;) mal ganz kurz:
    Ein Array ist vergleichbar mit einer Tabelle.
    Das Array, welches von INIReadSection() zurückgegeben wird wäre dann eine Tabelle mit zwei Spalten.
    Arrays werden über Index angesprochen, das erste Element hat immer Index 0.
    Die Spalte 0 enthält dann den Schlüssel und die Spalte 1 den Wert.
    Also:
    $ArrayFromINI[0][0] = Anzahl der Einträge
    $ArrayFromINI[1][0] = Schlüssel1
    $ArrayFromINI[1][1] = Wert1
    $ArrayFromINI[2][0] = Schlüssel2
    $ArrayFromINI[2][1] = Wert2
    usw.

  • Variablen einlesen

    • BugFix
    • 25. Oktober 2007 um 23:46
    Zitat

    Habe schon iniread und fileread probiert, klappt aber leider net.


    Das ist ja mal 'ne fundierte Fehlerbeschreibung [/Ironie]
    Schreib die Variablen in eine INI, mit INIReadSection liest du bei Programmstart ein.

  • Weihnachtskalender

    • BugFix
    • 25. Oktober 2007 um 23:43

    Tipp: Arbeite im OnEvent-Mode. Das vereinfacht die Sache wesentlich.

  • Schmutziges Keyboard

    • BugFix
    • 25. Oktober 2007 um 21:26

    Yep, die kosten nicht so viel Stangen. :D

    Zitat

    Problem: Die NUM-Minustaste brauch man um bei SciTe schnell Zeilen auszukommentieren.


    Ersatzlösung: STRG+Q tut's auch ;)
    Geht auch ganz fix (li. Daumen + li. Zeigefinger). Und du mußt die Hand nicht großartig bewegen. NUM- ist ja die am weitesten entfernte Taste auf der Tastatur. Bin icih viel zu faul zu :P

  • Weihnachtskalender

    • BugFix
    • 25. Oktober 2007 um 21:20

    Ich hab jetzt mal noch eine Erläuterung hinzugefügt, die hoffentlich alle Klarheiten restlos beseitigt :rofl:
    Objekt: Scripting.Dictionary

  • Schmutziges Keyboard

    • BugFix
    • 25. Oktober 2007 um 19:54

    Oder du nimmst ein Flex-Board, wie es auf Intensivstationen verwendet wird.
    Das kannst du hemmungslos in ein Waschbecken schmeißen und mal gründlich abbürsten. :P

  • Weihnachtskalender

    • BugFix
    • 25. Oktober 2007 um 18:30
    Zitat

    Also BugFix sicherlich mit einer Arraylösung

    :P Nöö, hierfür bietet sich doch supi das Dictionary-Objekt an. ;)
    Legt mal schön los, mal sehen was so wird.

  • combo eingaben speichern

    • BugFix
    • 25. Oktober 2007 um 14:08

    Dann setz doch nen Zeilenumbruch:

    GUICtrlSetData($Edit1, StringFormat($box3 & $box1 & " Ping:" & $edittext & @LF))

  • mehrere Checkboxen überprüfen

    • BugFix
    • 25. Oktober 2007 um 14:00

    Wenn du mehrere Checkboxen abfragen willst, ist folgendes Beispiel vllt. hilfreich.
    Hier setzt du für 'Checked' deinen eigenen Statuswert (Bitwert), der für jede Box unterschiedlich ist. Startwert für alle Checkboxen ist dabei 'UnChecked'.
    Egal, welche Boxen markiert sind - die Summe des Statuswertes ist eineindeutig. D.h. wenn z.B. der Wert 3 ist, sind die Boxen 1 und 2 markiert.
    Das läßt sich dann prima mit Switch verarbeiten.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Opt("GUIOnEventMode", 1)
    Dim $CB_Bit = 0
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 460, 318, 286, 144)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    $Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 54, 42, 97, 17)
    GUICtrlSetOnEvent(-1, "Checkbox1Click")
    $Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 54, 81, 97, 17)
    GUICtrlSetOnEvent(-1, "Checkbox2Click")
    $Checkbox3 = GUICtrlCreateCheckbox("Checkbox3", 54, 120, 97, 17)
    GUICtrlSetOnEvent(-1, "Checkbox3Click")
    $Checkbox4 = GUICtrlCreateCheckbox("Checkbox4", 54, 160, 97, 17)
    GUICtrlSetOnEvent(-1, "Checkbox4Click")
    $Checkbox5 = GUICtrlCreateCheckbox("Checkbox5", 54, 199, 97, 17)
    GUICtrlSetOnEvent(-1, "Checkbox5Click")
    $Checkbox6 = GUICtrlCreateCheckbox("Checkbox6", 54, 238, 97, 17)
    GUICtrlSetOnEvent(-1, "Checkbox6Click")
    $Input1 = GUICtrlCreateInput("", 282, 38, 121, 21)
    $Label1 = GUICtrlCreateLabel("Markiert sind:", 206, 42, 67, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    Sleep(100)
    WEnd

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

    Func Form1Close()
    Exit
    EndFunc

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

    Func Checkbox1Click()
    $CB_Bit = BitXOR($CB_Bit, 1)
    _CBRead()
    EndFunc
    Func Checkbox2Click()
    $CB_Bit = BitXOR($CB_Bit, 2)
    _CBRead()
    EndFunc
    Func Checkbox3Click()
    $CB_Bit = BitXOR($CB_Bit, 4)
    _CBRead()
    EndFunc
    Func Checkbox4Click()
    $CB_Bit = BitXOR($CB_Bit, 8)
    _CBRead()
    EndFunc
    Func Checkbox5Click()
    $CB_Bit = BitXOR($CB_Bit, 16)
    _CBRead()
    EndFunc
    Func Checkbox6Click()
    $CB_Bit = BitXOR($CB_Bit, 32)
    _CBRead()
    EndFunc

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

    Func _CBRead()
    Local $str = ''
    If BitAND($CB_Bit, 1) Then $str &= 1 & ', '
    If BitAND($CB_Bit, 2) Then $str &= 2 & ', '
    If BitAND($CB_Bit, 4) Then $str &= 3 & ', '
    If BitAND($CB_Bit, 8) Then $str &= 4 & ', '
    If BitAND($CB_Bit, 16) Then $str &= 5 & ', '
    If BitAND($CB_Bit, 32) Then $str &= 6
    GUICtrlSetData($Input1, $str)
    EndFunc

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

    ; mögliche Abarbeitung:
    Switch $CB_Bit
    Case 1
    ; Code für CB 1 markiert
    Case 2
    ; Code für CB 2 markiert
    Case 3
    ; Code für CB 1+2 markiert
    Case 4
    ; Code für CB 3 markiert
    Case 5
    ; Code für CB 1+3 markiert
    ; usw.....
    EndSwitch

    [/autoit]
  • Pointer Position

    • BugFix
    • 24. Oktober 2007 um 23:02

    Wenn du z.B. ein Inputfeld zur Eingabe markierst, dann blinkt dort drinnen das 'Caret'. Tippst du ein Zeichen wandert das Caret ein Zeichen weiter.
    Das Zeichen sieht aus wie auf der Tastatur die Pipe.

  • Pointer Position

    • BugFix
    • 24. Oktober 2007 um 22:58

    Er möchte die Caret-Position wissen.
    Allerdings sehe ich darin keinen Sinn. Wenn das entsprechende Control den Focus hat, werden alle Eingaben automatisch beginnend an der Caret-Position getätigt.

  • Tray Menü bearbeiten

    • BugFix
    • 24. Oktober 2007 um 18:52
    Zitat

    weiß ich aber nicht wie man etwas rückgängig machen kann


    Kommt immer drauf an, was du rückgängig machen willst. Aber kaum ein Control unterstützt von Haus aus die Undo-Funktion.
    Bleibt also nur alle Daten zwischenspeichern und bei Undo den letzten Zustand wiederherstellen. ;)

  • Icon richtig darstellen - ID falsch

    • BugFix
    • 24. Oktober 2007 um 01:51

    Ich habe keine probable Lösung zur Hand - ich lasse das immer in einer Testschleife mit Zähleranzeige laufen, bis das gewünschte Zeichen erscheint.
    Ich kann nur bestätigen, dass die im Reshacker angezeigten ID's gar nix mit den Windowsinternen ID's der shell32.dll zu tun haben.
    Es ist nicht mal ein konstanter Versatz oder sonstiges System erkennbar.

  • grundlegendes zum thema pixelsearch

    • BugFix
    • 23. Oktober 2007 um 22:35

    So schwer....
    left: A-D (x links)
    right: B-C (x rechts)
    top: A-B (y oben)
    bottom: C-D (y unten)

  • Objekt: WScript.Shell

    • BugFix
    • 23. Oktober 2007 um 21:25

    Freut mich, wenn es euch gefällt. :]

    Greenhorn:
    Wenn du zum FSO noch Fragen hast, melde dich doch einfach.
    Adhoc wüßte ich jetzt nicht, an welchen Punkten ich die Erläuterung vertiefen sollte.

  • Else - if --> ich werde wahnsinnig!

    • BugFix
    • 23. Oktober 2007 um 15:51

    Dann verabschiede dich von Sprüngen ;)
    Fang an strukturiert zu denken :D

    So gehts z.B.

    [autoit]

    If FileExists($file) Then
    If FileGetVersion($file) = 'Versionsnr.-NEU' Then Exit
    EndIf
    FileInstall('.....')

    [/autoit]
  • UDF-Sammlung: Objekt Dictionary

    • BugFix
    • 21. Oktober 2007 um 15:31

    Ich habe zu dem Objekt Dictionary (s. hier) eine UDF-Sammlung erstellt.

    *** Funktionssammlung ***

    _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, Wert)
    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 '' ü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 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

    _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 Anzahl gelesener Paare zurück

    _FileWriteFromObjDict(Objekt, TextDatei-Pfad, Seperator, Overwrite)
    Schreibt die Schlüssel-Wert Paare des Objekts in die angegebene Datei (1 Paar/Zeile)
    Standard-Seperator ist '|', kann hier angepaßt werden
    Gibt Anzahl geschriebener Paare zurück

    Edit 24.10.07: _FileReadToObjDict() und _FileWriteFromObjDict() fertiggestellt

    Edit 25.10.07:
    Ergänzungen für SciTE
    - Einträge für Autovervollständigung erstellt
    - Abkürzungen erstellt
    - Programm zur Aktualisierung der Autovervollständigungs- und Abkürzungsdatei erstellt (verwendet angehängte INI)

    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>
    #include <GuiListView.au3>

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

    ; Dictionary Objekt erstellen
    $oTest = _ObjDictCreate(1)

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

    ; Schlüsselpaare hinzufügen
    _ObjDictAdd($oTest, 'Schlüssel1', 'Wert1')
    _ObjDictAdd($oTest, 'Schlüssel2', 'Wert2')
    _ObjDictAdd($oTest, 'Schlüssel3', 'Wert3')

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

    ; Anzeige aller Schlüssel-Wert Paare
    _ObjDictList($oTest, 'Einträge hinzugefügt')

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

    ; Wert von 'Schlüssel1' auslesen
    MsgBox(0, 'Wert von Schlüssel1', _ObjDictGetValue($oTest, 'Schlüssel1'))

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

    ; Wert von 'Schlüssel1' neu setzen
    _ObjDictSetValue($oTest, 'Schlüssel1', 'neuer Wert')
    MsgBox(0, ' geänderter Wert Schlüssel1', _ObjDictGetValue($oTest, 'Schlüssel1'))

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

    ; Anzahl Schlüssel-Wert Paare ermitteln
    MsgBox(0, 'Anzahl Schlüssel-Wert Paare', _ObjDictCount($oTest))

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

    ; Suchen ob 'Schlüssel3' vorhanden
    If _ObjDictSearch($oTest, 'Schlüssel3') Then
    MsgBox(0, 'Ergebnis Suche', 'Schlüssel3 - vorhanden')
    EndIf
    _ObjDictList($oTest, 'vor dem Löschen')

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

    ; 'Schlüssel2' löschen
    _ObjDictDeleteKey($oTest, 'Schlüssel2')
    _ObjDictList($oTest, 'Schlüssel2 gelöscht')

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

    ; alle Schlüssel löschen
    _ObjDictDeleteKey($oTest, '')
    _ObjDictList($oTest)

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

    #cs
    ============================= OBJEKT 'Scripting.Dictionary' =======================================
    *** Funktionssammlung ***

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

    _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 '' ü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

    Autor: BugFix ( [email='bugfix@autoit.de'][/email] )

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

    ===================================================================================================
    #ce
    #include <GuiConstants.au3>
    #include <GuiListView.au3>
    ;==================================================================================================
    ; Parameter: $MODE
    ; 0 Binär (default)
    ; 1 Text
    ; Return: Objekt Handle
    ;==================================================================================================
    Func _ObjDictCreate($MODE=0)
    $oDICT = ObjCreate('Scripting.Dictionary')
    If $MODE <> 0 Then $oDICT.CompareMode = 1
    Return $oDICT
    EndFunc ;==>_ObjDictCreate

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

    ;==================================================================================================
    ; Parameter: $oDICT - Handle des Dictionary-Objektes
    ; $KEY - Schlüssel
    ; $VALUE - Wert
    ; Return: Erfolg: 0
    ; Fehler: -1
    ; Fehlerwert: 1 Objekt existiert nicht
    ; 2 Schlüssel ohne Inhalt übergeben
    ; 3 Wert hat keinen Inhalt
    ; 4 Schlüssel bereits vorhanden
    ;==================================================================================================
    Func _ObjDictAdd(ByRef $oDICT, $KEY, $VALUE)
    If Not IsObj($oDICT) Then
    SetError(1)
    Return -1
    ElseIf $KEY = '' Then
    SetError(2)
    Return -1
    ElseIf $VALUE = '' Then
    SetError(3)
    Return -1
    ElseIf $oDICT.Exists($KEY) Then
    SetError(4)
    Return -1
    EndIf
    $oDICT.Add($KEY, $VALUE)
    Return 0
    EndFunc ;==>_ObjDictAdd

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

    ;==================================================================================================
    ; Parameter: $oDICT - Handle des Dictionary-Objektes
    ; $KEY - Schlüssel
    ; Return: Erfolg: Wert des Schlüssels
    ; Fehler: -1
    ; Fehlerwert: 1 Objekt existiert nicht
    ; 2 Schlüssel ohne Inhalt übergeben
    ; 5 Schlüssel nicht vorhanden
    ;==================================================================================================
    Func _ObjDictGetValue(ByRef $oDICT, $KEY)
    If Not IsObj($oDICT) Then
    SetError(1)
    Return -1
    ElseIf $KEY = '' Then
    SetError(2)
    Return -1
    ElseIf Not $oDICT.Exists($KEY) Then
    SetError(5)
    Return -1
    EndIf
    Return $oDICT.Item($KEY)
    EndFunc ;==>_ObjDictGetValue

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

    ;==================================================================================================
    ; Parameter: $oDICT - Handle des Dictionary-Objektes
    ; $KEY - Schlüssel
    ; $VALUE - Wert
    ; Return: Erfolg: 0
    ; Fehler: -1
    ; Fehlerwert: 1 Objekt existiert nicht
    ; 2 Schlüssel ohne Inhalt übergeben
    ; 3 Wert hat keinen Inhalt
    ; 5 Schlüssel nicht vorhanden
    ;==================================================================================================
    Func _ObjDictSetValue(ByRef $oDICT, $KEY, $VALUE)
    If Not IsObj($oDICT) Then
    SetError(1)
    Return -1
    ElseIf $KEY = '' Then
    SetError(2)
    Return -1
    ElseIf $VALUE = '' Then
    SetError(3)
    Return -1
    ElseIf Not $oDICT.Exists($KEY) Then
    SetError(5)
    Return -1
    EndIf
    $oDICT.Item($KEY) = $VALUE
    Return 0
    EndFunc ;==>_ObjDictSetValue

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

    ;==================================================================================================
    ; Parameter: $oDICT - Handle des Dictionary-Objektes
    ; Return: Erfolg: Anzahl der Schlüssel-Wert Paare
    ; Fehler: -1
    ; Fehlerwert: 1 Objekt existiert nicht
    ;==================================================================================================
    Func _ObjDictCount(ByRef $oDICT)
    If Not IsObj($oDICT) Then
    SetError(1)
    Return -1
    EndIf
    Return $oDICT.Count
    EndFunc ;==>_ObjDictCount

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

    ;==================================================================================================
    ; Parameter: $oDICT - Handle des Dictionary-Objektes
    ; $KEY - Schlüssel
    ; Return: Erfolg: TRUE Schlüssel vorhanden
    ; FALSE Schlüssel nicht vorhanden
    ; Fehler: -1
    ; Fehlerwert: 1 Objekt existiert nicht
    ; 2 Schlüssel ohne Inhalt übergeben
    ;==================================================================================================
    Func _ObjDictSearch(ByRef $oDICT, $KEY)
    If Not IsObj($oDICT) Then
    SetError(1)
    Return -1
    ElseIf $KEY = '' Then
    SetError(2)
    Return -1
    ElseIf Not $oDICT.Exists($KEY) Then
    Return False
    Else
    Return True
    EndIf
    EndFunc ;==>_ObjDictSearch

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

    ;==================================================================================================
    ; Parameter: $oDICT - Handle des Dictionary-Objektes
    ; $KEY - Schlüssel (default='')
    ; mit $KEY = '' werden alle Schlüssel gelöscht
    ; Return: Erfolg: 0
    ; Fehler: -1
    ; Fehlerwert: 1 Objekt existiert nicht
    ;==================================================================================================
    Func _ObjDictDeleteKey(ByRef $oDICT, $KEY='')
    If Not IsObj($oDICT) Then
    SetError(1)
    Return -1
    EndIf
    If $KEY = '' Then
    $oDICT.RemoveAll
    Return 0
    ElseIf Not $oDICT.Exists($KEY) Then
    SetError(5)
    Return -1
    EndIf
    $oDICT.Remove($KEY)
    Return 0
    EndFunc ;==>_ObjDictDeleteKey

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

    ;==================================================================================================
    ; Parameter: $oDICT - Handle des Dictionary-Objektes
    ; $TITLE - Fenstertitel (optional)
    ; Return: Erfolg: GUI mit ListView
    ; Fehler: -1
    ; Fehlerwert: 1 Objekt existiert nicht
    ; Requirements: #include <GuiConstants.au3>
    ; #include <GuiListView.au3>
    ;==================================================================================================
    Func _ObjDictList(ByRef $oDICT, $TITLE='Elemente: Objekt Dictionary')
    If Not IsObj($oDICT) Then
    SetError(1)
    Return -1
    EndIf
    Local $count = $oDICT.Count
    Local $SaveMode = Opt("GUIOnEventMode",0), $ListGUI, $oDictLV, $btnClose, $msg
    $ListGUI = GUICreate($TITLE, 600, 400, (@DesktopWidth - 600)/2, (@DesktopHeight - 400)/2)
    $btnClose = GUICtrlCreateButton('&Ende', 40, 360, 70, 22)
    GUICtrlSetResizing($btnClose, BitOR($GUI_DockRight, $GUI_DockBottom, $GUI_DockSize))
    GUICtrlDelete($oDictLV)
    $oDictLV = GUICtrlCreateListView('Schlüssel|Wert', 10, 10, 580, 340, BitOR($LVS_SHOWSELALWAYS, _
    $LVS_EDITLABELS), BitOR($LVS_EX_GRIDLINES, $LVS_EX_HEADERDRAGDROP, $LVS_EX_FULLROWSELECT, $LVS_EX_REGIONAL))
    If $count > 0 Then
    Local $strKey, $colKeys = $oDICT.Keys
    For $strKey In $colKeys
    GUICtrlCreateListViewItem($strKey & '|' & $oDICT.Item($strKey), $oDictLV)
    Next
    Else
    WinSetTitle($ListGUI, '', 'Das Objekt Dictionary enthält keine Elemente!')
    EndIf
    GUISetState(@SW_SHOW, $ListGUI)
    While 1
    $msg = GUIGetMsg(1)
    If $msg[1] = $ListGUI And _
    ($msg[0] = $GUI_EVENT_CLOSE Or $msg[0] = $btnClose) Then ExitLoop
    WEnd
    GUIDelete($ListGUI)
    Opt("GUIOnEventMode",$SaveMode)
    EndFunc ;==>ObjDictList

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

    ;==================================================================================================
    ; Parameter: $oDICT - Handle des Dictionary-Objektes
    ; $PathINI - Pfad der INI-Datei
    ; $SECTION - Sektion die gelesen werden soll
    ; Return: Erfolg: Anzahl der eingelesenen Schlüssel-Wert Paare
    ; Fehler: -1
    ; Fehlerwert: 1 Objekt existiert nicht
    ; 6 INI-Pfad nicht vorhanden
    ; 7 kein Sektionsname
    ; 8 INI-Sektion konnte nicht gelesen werden oder leer
    ;==================================================================================================
    Func _IniReadSectionToObjDict(ByRef $oDICT, $PathINI, $SECTION)
    If Not IsObj($oDICT) Then
    SetError(1)
    Return -1
    ElseIf Not FileExists($PathINI) Then
    SetError(6)
    Return -1
    ElseIf $SECTION = '' Then
    SetError(7)
    Return -1
    EndIf
    Local $arSECTION = IniReadSection($PathINI, $SECTION)
    If Not IsArray($arSECTION) Then
    SetError(8)
    Return -1
    EndIf
    For $i = 1 To $arSECTION[0][0]
    $oDICT.Add($arSECTION[$i][0], $arSECTION[$i][1])
    Next
    Return $arSECTION[0][0]
    EndFunc ;==>_IniReadSectionToObjDict

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

    ;==================================================================================================
    ; Parameter: $oDICT - Handle des Dictionary-Objektes
    ; $PathINI - Pfad der INI-Datei
    ; $SECTION - Sektion die gelesen werden soll
    ; Return: Erfolg: Anzahl der geschriebenen Schlüssel-Wert Paare
    ; Fehler: -1
    ; Fehlerwert: 1 Objekt existiert nicht
    ; 7 kein Sektionsname
    ; 9 INI-Sektion konnte nicht geschrieben werden
    ;==================================================================================================
    Func _IniWriteSectionFromObjDict(ByRef $oDICT, $PathINI, $SECTION)
    If Not IsObj($oDICT) Then
    SetError(1)
    Return -1
    ElseIf $SECTION = '' Then
    SetError(7)
    Return -1
    EndIf
    Local $arSECTION[$oDICT.Count][2], $i = 0
    Local $strKey, $colKeys = $oDICT.Keys
    For $strKey In $colKeys
    $arSECTION[$i][0] = $strKey
    $arSECTION[$i][1] = $oDICT.Item($strKey)
    $i += 1
    Next
    If IniWriteSection($PathINI, $SECTION, $arSECTION, 0) = 1 Then
    Return $oDICT.Count
    Else
    SetError(9)
    Return -1
    EndIf
    EndFunc ;==>_IniWriteSectionFromObjDict

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

    ;==================================================================================================
    ; Parameter: $oDICT - Handle des Dictionary-Objektes
    ; $PathFile - Pfad der Datei
    ; $SEPERATOR - Trennzeichen zwischen Wert u. Schlüssel, Standard: '|'
    ; Return: Erfolg: Anzahl der eingelesenen Schlüssel-Wert Paare
    ; Fehler: -1
    ; Fehlerwert: 1 Objekt existiert nicht
    ; 6 Datei-Pfad nicht vorhanden
    ; 7 Leerstring als Seperator übergeben
    ; 8 Datei konnte nicht gelesen werden
    ;==================================================================================================
    Func _FileReadToObjDict(ByRef $oDICT, $PathFile, $SEPERATOR='|')
    If Not IsObj($oDICT) Then
    SetError(1)
    Return -1
    ElseIf Not FileExists($PathFile) Then
    SetError(6)
    Return -1
    ElseIf $SEPERATOR = '' Then
    SetError(7)
    Return -1
    EndIf
    Local $fh = FileOpen($PathFile, 0), $line
    Local $val
    If $fh = -1 Then
    SetError(8)
    Return -1
    EndIf
    While 1
    $line = FileReadLine($fh)
    If @error = -1 Then ExitLoop
    $val = StringSplit($line, $SEPERATOR)
    If $val[0] > 1 Then
    $oDICT.Add($val[1], $val[2])
    EndIf
    Wend
    FileClose($fh)
    Return $oDICT.Count
    EndFunc ;==>_FileReadToObjDict

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

    ;==================================================================================================
    ; Parameter: $oDICT - Handle des Dictionary-Objektes
    ; $PathFile - Pfad der Datei
    ; $SEPERATOR - Trennzeichen zwischen Wert u. Schlüssel, Standard: '|'
    ; $OVERWRITE - Falls Datei existiert, wird sie überschrieben (Standard).
    ; Mit 'FALSE' wird an bestehende Datei angehängt.
    ; Return: Erfolg: Anzahl der geschriebenen Schlüssel-Wert Paare
    ; Fehler: -1
    ; Fehlerwert: 1 Objekt existiert nicht
    ; 7 Leerstring als Seperator übergeben
    ; 8 Datei konnte nicht geschrieben werden
    ;==================================================================================================
    Func _FileWriteFromObjDict(ByRef $oDICT, $PathFile, $SEPERATOR='|', $OVERWRITE=True)
    If Not IsObj($oDICT) Then
    SetError(1)
    Return -1
    ElseIf $SEPERATOR = '' Then
    SetError(7)
    Return -1
    EndIf
    If $OVERWRITE Then
    Local $fh = FileOpen($PathFile, 34)
    Else
    Local $fh = FileOpen($PathFile, 33)
    EndIf
    Local $strKey, $colKeys = $oDICT.Keys
    For $strKey In $colKeys
    FileWriteLine($fh, $strKey & $SEPERATOR & $oDICT.Item($strKey))
    If @error Then
    SetError(8)
    Return -1
    EndIf
    Next
    FileClose($fh)
    Return $oDICT.Count
    EndFunc ;==>_FileWriteFromObjDict

    [/autoit]

    Dateien

    objDictonary.au3 14,67 kB – 723 Downloads objDict_abbrev_calltip.ini 4,11 kB – 610 Downloads objDict_Set_abbrev_calltip.au3 2,67 kB – 700 Downloads
  • Counter

    • BugFix
    • 21. Oktober 2007 um 00:02
    Zitat

    Original von Masterraven9
    ...
    Jetzt steh ich gerade vor mehreren Problemen z.B.
    mit welchem Befehl kann ich das regeln das ich das Program auch während es runterzählt mit einem Klick auf "x" beenden kann oder
    wie kann ich ein neues GUI Fenster erstellen in dem ich auch Anweisungen ausführen kann.
    thx

    Das geht nicht.
    Während die Zeitsetzung läuft bist du in der Schleife 'gefangen'.
    Andere Ereignisse lassen sich erst abfragen, wenn die Schleife beendet ist.
    Ein zeitgleiches Ausführen eines anderen Fensters geht ebenfalls nicht - AutoIt ist nicht multithreadfähig.

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™