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

  • Wie kann man eine Variablen-Liste an Switch-Case übergeben?

    • BugFix
    • 27. August 2020 um 09:24

    Nimm nicht Switch-Case, sondern Select-Case:

    AutoIt
    Global Enum $ID_1 = 1, $ID_2, $ID_3, $ID_4, $ID_5, $ID_6, $ID_7, $ID_8, $ID_9, $ID_10, $ID_11, $ID_12, $ID_13, $ID_14, $ID_15, $ID_16, $ID_17, $ID_18, $ID_19, $ID_20
    
    Global $aList_1[] = [$ID_1, $ID_3, $ID_5, $ID_6, $ID_7, $ID_11]
    Global $aList_2[] = [$ID_2, $ID_4, $ID_8, $ID_9, $ID_10]
    Global $aList_3[] = [$ID_12, $ID_14, $ID_15, $ID_19, $ID_20]
    Global $aList_4[] = [$ID_13, $ID_16, $ID_17, $ID_18]
    
    Func _CheckList(ByRef $aList, $CheckVal)
        For $i = 0 To UBound($aList) -1
            If $aList[$i] = $CheckVal Then Return True
        Next
        Return False
    EndFunc
    
    Global $check = $ID_20
    Select
        Case _CheckList($aList_1, $check)
            ConsoleWrite('Liste 1' & @CRLF)
        Case _CheckList($aList_2, $check)
            ConsoleWrite('Liste 2' & @CRLF)
        Case _CheckList($aList_3, $check)
            ConsoleWrite('Liste 3' & @CRLF)
        Case _CheckList($aList_4, $check)
            ConsoleWrite('Liste 4' & @CRLF)
    EndSelect
    Alles anzeigen
  • Gibt es eine "Tag"-Eigenschaft für Controls?

    • BugFix
    • 19. August 2020 um 15:36
    Zitat von Professor Bernd

    Nur die Label-Buttons bekommen einen weißen Rahmen, der beim Hovern erscheint. Somit genügt es, wenn die Label-Buttons als solche erkennbar sind.

    So richtig habe ich dein System noch nicht verstanden. Legst du was fest oder legt der Anwender was fest?

    Irgendwoher muss ja der Rahmen kommen (den erstellt doch nicht der Anwender, sondern du?). Dann frag doch einfach ab: Label(Left.Top) - n Pixel = Position Rahmen.

  • Geburtstag

    • BugFix
    • 19. August 2020 um 13:54
    Zitat von Musashi

    (mehrere Namen mit Komma trennen)

    Genau. Und bei Geburtstagen ist auch sinnvoll, wenn man weiß, der wievielte es ist. Also würde ich in der INI das Geburtsjahr mit abspeichern.

    Das Skript kannst du dann so erweitern:

    AutoIt
    ; ==
    ; INI (geburtstag.ini)
    ; Sektion = Monat
    ; Key = Tag_im_Monat
    ; Value = Name(n)
    ; ==
    ; [1]
    ; 1=Peter
    ; 5=Max(1998),Doris(2002)
    ; [8]
    ; 19=AutoIt(2005)
    
    #include <Date.au3>
    
    Global $INI = @ScriptDir & '\geburtstag.ini'
    
    MsgBox(0, 'Geburtstage (Heute)', _GeburtstagsCheck())
    
    Func _GeburtstagsCheck($Monat=@MON, $Tag=@MDAY)
        Local Const $NoGeb = 'Heute keine Geburtstage.'
        Local $GeburtstageHeute = IniRead($INI, Int($Monat), Int($Tag), $NoGeb)
        If $GeburtstageHeute = $NoGeb Then Return $NoGeb
        ; falls mehrere: Splitten (ist es nur einer, ist nur dieser im Array)
        Local $aGeb = StringSplit($GeburtstageHeute, ',')
        Local $sReturn = ''
        Local $sDateToday = StringFormat('%s/%02d/%02d',@YEAR, $Monat, $Tag) ; Datum in Format für Datumsfunktion
        Local $GebDat, $aGebYear
        For $i = 1 To $aGeb[0]
            ; das Geburtsjahr: (JAHR) auslesen
            $aGebYear = StringRegExp($aGeb[$i], '\((\d+)\)', 1)
            If IsArray($aGebYear) Then  ; nur wenn ein Jahr angegeben wurde: Berechnen des Alters
                $GebDat = StringFormat('%s/%02d/%02d',$aGebYear[0], $Monat, $Tag)
                $sReturn &= StringRegExpReplace($aGeb[$i], '\((\d+)\)', ' [' & _DateDiff('Y', $GebDat, $sDateToday) & ']') & @CRLF
            Else
                $sReturn &= $aGeb[$i] & @CRLF
            EndIf
        Next
        Return $sReturn
    EndFunc
    Alles anzeigen
  • Geburtstag

    • BugFix
    • 19. August 2020 um 10:27

    Übrigens:

    Wenn du nicht gerade hunderte von Geburtstagen verwalten möchtest, ist hierfür sogar das INI-Format die komfortabelste Lösung.

    AutoIt
    ; ==
    ; INI (geburtstag.ini)
    ; Sektion = Monat
    ; Key = Tag_im_Monat
    ; Value = Name(n)
    ; ==
    ; [1]
    ; 1=Peter
    ; 5=Max,Doris
    ; [8]
    ; 19=AutoIt
    
    Global $INI = @ScriptDir & '\geburtstag.ini'
    
    MsgBox(0, 'Geburtstage (Heute)', _GeburtstagsCheck())
    
    Func _GeburtstagsCheck($Monat=@MON, $Tag=@MDAY)
        Return IniRead($INI, Int($Monat), Int($Tag), 'Heute kein Geburtstag.')
    EndFunc
    Alles anzeigen
  • Gibt es eine "Tag"-Eigenschaft für Controls?

    • BugFix
    • 19. August 2020 um 10:02

    Wenn du tatsächlich nur Label, die als Button verwendet werden markieren willst, kannst du diese doch in einem anderen Style erstellen und auf diesen Style prüfen.

    z.B. so:

    AutoIt
    #include <WinAPISysWin.au3>
    
    Global $hGui = GUICreate('Test')
    Global $Label1 = GUICtrlCreateLabel('Label 1', 10, 10, 100, 20)
    Global $Label2 = GUICtrlCreateLabel('Label 2', 10, 40, 100, 20)
    Global $Label_Button = GUICtrlCreateLabel('Label als Button', 10, 70, 100, 20, BitOr(0x0200,0x0001), 0x00000300)
    
    GUISetState()
    
    While True
        Switch GUIGetMsg()
            Case -3
                Exit
            Case $Label1
                ConsoleWrite('Label 1' & @CRLF)
                ConsoleWrite('_IsLabelButton: ' & _IsLabelButton($Label1) & @CRLF)
            Case $Label2
                ConsoleWrite('Label 2' & @CRLF)
                ConsoleWrite('_IsLabelButton: ' & _IsLabelButton($Label2) & @CRLF)
            Case $Label_Button
                ConsoleWrite('Label als Button' & @CRLF)
                ConsoleWrite('_IsLabelButton: ' & _IsLabelButton($Label_Button) & @CRLF)
        EndSwitch
    WEnd
    
    
    
    Func _IsLabelButton($_ID)
        Local $hwnd = GUICtrlGetHandle($_ID)
        Local $iStyleEx = _WinAPI_GetWindowLong($hwnd, $GWL_STYLE)
        Return (BitAND($iStyleEx,0x0200) = 0x0200)
    EndFunc
    Alles anzeigen
  • Gibt es eine "Tag"-Eigenschaft für Controls?

    • BugFix
    • 18. August 2020 um 22:48
    Zitat von Professor Bernd

    Was spricht gegen das Dictionary?

    Kommt auf den Anwendungsfall an. Wenn ich mich recht erinnere, gibt es beim Dictionary Probleme mit Handle. Dann kannst du nur einen Wert je Key speichern (könntest auch ein Array als Wert nehmen, aber dann lieber gleich 2D-Array).

    Für den Anwender ist es doch völlig wurscht, ob du für die Verwaltung Array, Dictionary oder Structs oder Mischformen davon oder etwas völlig anderes verwendest. Zum Zugriff erstellt man eine Funktion, die das interne Handling (neuen Wert anlegen, Wert ändern, Wert löschen oder was auch immer) vornimmt. Das ist absolut vergleichbar mit dem Speichermanagement von AutoIt. Du schreibst z. B. in einer Funktion:

    Local $Variable = 123

    und AutoIt reserviert beim Aufruf den erforderlichen Speicher und setzt den Wert. Wird die Funktion beendet, gibt AutoIt den Speicher wieder frei. Du machst aber nur die Zuweisung. Somit kann dir doch egal sein, ob das Hintergrundhandling kompliziert oder einfach ist.

  • Gibt es eine "Tag"-Eigenschaft für Controls?

    • BugFix
    • 18. August 2020 um 22:23

    Für das Handling schreibt man eine Managementfunktion mit Get() und Set(), ist absolut trivial. Habe ich auch schon mehrfach hier gepostet.

  • "AutoIt" als Standard beim Einfügen von Code

    • BugFix
    • 18. August 2020 um 21:38

    Strg+Shift+V

    :P

  • Gibt es eine "Tag"-Eigenschaft für Controls?

    • BugFix
    • 18. August 2020 um 21:19

    Du musst die ID eines Control doch sowieso speichern. Wenn du dafür ein 2D-Array verwendest, kannst du auch problemlos zusätzliche Infos in unbegrenzter Menge ablegen.

  • Deutsche Hilfe auf 3.3.14.5 updaten - mitmachen

    • BugFix
    • 18. August 2020 um 14:56
    Zitat von Tweaky

    Neue Dateien 05


    [RESERVIERT: BugFix]

    Erledigt

    Dateien

    _Excel_BookOpenText.zip 1,3 kB – 493 Downloads _Excel_BookSave.zip 747 Byte – 498 Downloads _Excel_BookSaveAs.zip 686 Byte – 469 Downloads _Excel_Close.zip 744 Byte – 449 Downloads _Excel_ConvertFormula.zip 1,42 kB – 432 Downloads _Excel_Export.zip 1,27 kB – 461 Downloads _Excel_FilterGet.zip 799 Byte – 456 Downloads _Excel_FilterSet.zip 1,71 kB – 561 Downloads _Excel_PictureAdd.zip 848 Byte – 455 Downloads _GDIPlus_EffectCreateColorMatrix.zip 711 Byte – 433 Downloads
  • Deutsche Hilfe auf 3.3.14.5 updaten - mitmachen

    • BugFix
    • 18. August 2020 um 12:18
    Zitat von Tweaky

    Neue Dateien 08


    [RESERVIERT: BugFix]

    Erledigt

    Dateien

    _WinAPI_RegisterApplicationRestart 3_3_14_5.zip 2,1 kB – 500 Downloads _WinAPI_SetErrorMode 3_3_14_5.zip 621 Byte – 515 Downloads _WinAPI_UniqueHardwareID 3_3_14_5.zip 1,09 kB – 420 Downloads _WinAPI_WordToShort 3_3_14_5.zip 445 Byte – 498 Downloads _WinAPI_EnumDllProc 3_3_14_5.zip 1,35 kB – 438 Downloads _WinAPI_FatalExit 3_3_14_5.zip 501 Byte – 481 Downloads _WinAPI_GetApplicationRestartSettings 3_3_14_5.zip 819 Byte – 497 Downloads _WinAPI_GetErrorMode 3_3_14_5.zip 497 Byte – 480 Downloads _WinAPI_IsNetworkAlive 3_3_14_5.zip 714 Byte – 537 Downloads _WinAPI_NtStatusToDosError 3_3_14_5.zip 579 Byte – 425 Downloads
  • Deutsche Hilfe auf 3.3.14.5 updaten - mitmachen

    • BugFix
    • 18. August 2020 um 10:56
    Zitat von Tweaky

    Neue Dateien 10


    [RESERVIERT: BugFix]

    Erledigt.

    Dateien

    _WinAPI_MakeWord 3_3_14_5.zip 448 Byte – 438 Downloads _WinAPI_OemToChar 3_3_14_5.zip 556 Byte – 430 Downloads _WinAPI_ShortToWord 3_3_14_5.zip 445 Byte – 472 Downloads _WinAPI_StrFormatByteSize 3_3_14_5.zip 603 Byte – 468 Downloads _WinAPI_StrFormatByteSizeEx 3_3_14_5.zip 611 Byte – 475 Downloads _WinAPI_StrFormatKBSize 3_3_14_5.zip 576 Byte – 417 Downloads _WinAPI_StrFromTimeInterval 3_3_14_5.zip 747 Byte – 466 Downloads _WinAPI_SwapDWord 3_3_14_5.zip 476 Byte – 456 Downloads _WinAPI_SwapQWord 3_3_14_5.zip 452 Byte – 499 Downloads _WinAPI_SwapWord 3_3_14_5.zip 476 Byte – 466 Downloads
  • Deutsche Hilfe auf 3.3.14.5 updaten - mitmachen

    • BugFix
    • 18. August 2020 um 10:20
    Zitat von Tweaky

    Neue Dateien 09


    [RESERVIERT: BugFix]

    Erledigt.

    Dateien

    _WinAPI_CharToOem 3_3_14_5.zip 569 Byte – 487 Downloads _WinAPI_FloatToDWord 3_3_14_5.zip 449 Byte – 574 Downloads _WinAPI_HashData 3_3_14_5.zip 696 Byte – 490 Downloads _WinAPI_HashString 3_3_14_5.zip 794 Byte – 426 Downloads _WinAPI_HiByte 3_3_14_5.zip 424 Byte – 417 Downloads _WinAPI_HiDWord 3_3_14_5.zip 443 Byte – 448 Downloads _WinAPI_IntToDWord 3_3_14_5.zip 455 Byte – 484 Downloads _WinAPI_LoByte 3_3_14_5.zip 422 Byte – 466 Downloads _WinAPI_LoDWord 3_3_14_5.zip 438 Byte – 450 Downloads _WinAPI_LongMid 3_3_14_5.zip 612 Byte – 496 Downloads
  • ListView - Editieren aller SubItems

    • BugFix
    • 17. August 2020 um 18:28

    Oh man, das ist wirklich seeeehr alt. ;)

    Das Editierfenster wird hier erstellt:

    AutoIt
    $EditBox = GUICreate('', 200, 30, -1, -1, BitOR($WS_POPUP,$WS_BORDER), $WS_EX_TOPMOST)
    $dummy = GUICtrlCreateDummy()
    $hEdit = GUICtrlCreateInput('', 5, 5, 190, 20, $SS_CENTER)

    Passe die Breite der GUI und des Input individuell an.

  • Yjuq's File Format - *.yff

    • BugFix
    • 17. August 2020 um 15:38
    Zitat von Yjuq

    den Key jetzt "Key=" nennen

    Genau das meinte ich doch mit dem Hinweis auf die Flexibilität.

    Hättest du einfach geschrieben, ich möchte auch ein "=" (oder Ähnliches) im Key verwenden können, wäre das Ziel klarer.
    Ich hatte keineswegs die Absicht, dein Werk madig zu machen, mir war nur nicht klar, welchen Vorteil ich damit erreichen kann.

    Also genieße bei der Hitze ein Hopfenkaltgetränk und kühle deinen Geist. ;)

  • Yjuq's File Format - *.yff

    • BugFix
    • 17. August 2020 um 09:37
    Zitat von Yjuq

    Mein erster Gedanke war logischerweise eine simple *.ini Datei. Jedoch war das Format leider noch viel zu unflexibel für mein Vorhaben.

    Vielleicht solltest du mal eine Bsp. generieren, dass die erforderliche Flexibilität beinhaltet. Das hier gezeigte Bsp. ist (deutlich einfacher lesbar) auch in einer INI abbildbar.

    Zitat von Yjuq

    Das Prinzip dieses Formates ist extrem simpel. Du wählst dir dein Delimeter und Escape Zeichen aus.

    Wenn diese Parameter frei wählbar sind, sollten sie auch im erstellten Dokument extra beschrieben werden, damit der Parser weiß, welche in der aktuellen Datei verwendet werden.

    Sind keine definiert, kann man ja Standardwerte verwenden.

  • Suche einfach erweiterbaren Einstellungen-Dialog (Program Settings)

    • BugFix
    • 16. August 2020 um 16:12
    Zitat von Professor Bernd

    VFL/DSL

    Schau mal in meinen Nim Post dazu: [Nim] Layout - DSL

  • shell.dll streikt, wenn die Gesamtlänge der Befehlszeile > 270 Zeichen ist.​

    • BugFix
    • 14. August 2020 um 20:53

    Auch wenn es dir nicht wirklich hilft, kann ich dir zumindest den (wahrscheinlichen) Grund dafür nennen.

    ShellExecuteA verwendet den Parameter LPCSTR lpFile,

    ShellExecuteW den Parameter LPCWSTR lpFile.

    Es ist davon auszugehen, dass in der Dll dieser Parameter qualifiziert wird, durch den Aufruf von GetFullPathNameA/W und diese wiederum ist limitiert durch MAX_PATH (256).

    Für den Unicode-Aufruf läßt sich das umgehen durch das Präfix "\\?\", also z.B. \\?\C:\path\file.ext, MAX_PATH wird dann auf 32.767 Zeichen erweitert.
    Kannst ja mal testen, ob das mit dieser Dll-Version auch möglich ist.

  • shell.dll streikt, wenn die Gesamtlänge der Befehlszeile > 270 Zeichen ist.​

    • BugFix
    • 13. August 2020 um 22:32

    Habe bisher noch nicht so lange Pfade gehabt.

    Alternative:

    Hardlink auf einen kurzen Pfad erstellen (Partitionsbeschränkung beachten). Belegt keinen zusätzlichen Speicher, da defacto nur eine Datei, kann man auch nicht vergessen Änderungen zu übertragen.

    Geht natürlich nur, wenn deine Datenträger das unterstützen (USB Stick mit einer FAT - Variante fällt dann aus).

  • Suche einfach erweiterbaren Einstellungen-Dialog (Program Settings)

    • BugFix
    • 13. August 2020 um 09:25

    [OT]

    Das Thema wurde auch hier im Forum schon intensiv diskutiert.

    Aber was ist denn Koda oder jeder andere visuelle GUI Designer, wenn man es auf die Funktion herunterbricht? - Ein "Tool" zur Erstellung und Beschreibung eines Layouts. Warum dann nicht VFL/DSL für AutoIt umsetzen?

    Und man darf eines nicht außer Acht lassen: Es ist nur für Maus-Freaks gedacht. Ich bin ein Tastatur-Freak und vermeide Maus, wo es nur geht (meine Projekte für die Firma sind zu 100% ohne Maus bedienbar) . Und ich weiß, dass ich nicht der einzige bin, der so "tickt" ^^.

    [/OT]

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™