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. Oscar

Beiträge von Oscar

  • _Singleton funktioniert manchmal nicht

    • Oscar
    • 26. September 2023 um 16:38
    Zitat von HansJ54

    Kann ich den _Singleton eigentlich ganz an den Anfang setzen vor den #Includes?

    Nicht vor allen Includes. "Misc.au3" wird für _Singleton benötigt.

    Aber ich würde es mal so testen:

    AutoIt
    #AutoIt3Wrapper_Icon=Weltkugel.ico
    #AutoIt3Wrapper_Outfile_x64=I:\BlpMenu\BlpMenu.exe
    #AutoIt3Wrapper_UseX64=y
    #AutoIt3Wrapper_Res_Fileversion=8.14.0.755
    #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
    #AutoIt3Wrapper_Res_ProductName=BlpMenu
    #AutoIt3Wrapper_Res_ProductVersion=1.0.0
    #AutoIt3Wrapper_Res_CompanyName=BLP
    #AutoIt3Wrapper_Res_LegalCopyright=BLP
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    
    #pragma compile(Icon, I:\BlpMenu\Entwicklung\weltkugel.ico)
    
    #include <Misc.au3>
    Global $sProgName = "BlpMenu"
    ; Test ob das Programm bereits gestartet ist
    If _Singleton("BlpMenuCheck", 1) = 0 Then
        MsgBox($MB_SYSTEMMODAL, "Warnung", "Eine Instanz des Programmes " & $sProgName & " wird bereits ausgeführt!")
        Exit
    EndIf
    
    
    #Region header files
    #include "blp_ToolsAllg.au3"
    #include <WinAPI.au3>
    #include <MsgBoxConstants.au3>
    #EndRegion header files
    Alles anzeigen
  • Analyse von Daten

    • Oscar
    • 26. September 2023 um 13:45
    Zitat von Alina

    Wo muss ich es machen, das wenn ich auf Button 11 drücke, das dann vorher die "alte Auswertung" gelöscht wird?

    Das passiert doch bereits: _GUICtrlListView_DeleteAllItems($idListview) in der Funktion "_AddToListview".

  • _Singleton funktioniert manchmal nicht

    • Oscar
    • 26. September 2023 um 12:03
    Zitat von HansJ54

    "blp_ToolsAllg.au3"

    Was steht in dieser UDF?

    Wird dort bereits irgendein Code ausgeführt?

    Der würde den _Singleton-Befehl nämlich verzögern.

  • _Singleton funktioniert manchmal nicht

    • Oscar
    • 26. September 2023 um 04:59
    Zitat von HansJ54

    Vielleicht kann man damit den Fehler tracen?

    Ja, vielleicht kann man das, aber dazu musst Du schonmal Dein Script posten.

  • die gleiche Datei: 1x original, 1x "Alina kopiert".

    • Oscar
    • 25. September 2023 um 19:01
    Zitat von Alina

    Vielleicht das mit den "nichts" und "00".

    In Binärdateien entspricht ein Nullbyte eben dem Wert 0. Ein Byte geht von 0-255 oder hexadezimal 0x00-0xFF. Das ist als Binärdatei auch normal und völlig ok.

    Als Text ist ein Nullbyte aber nicht darstellbar, wie auch noch andere Steuerzeichen. Diese werden vom Texteditor in lesbare Zeichen umgewandelt bzw. weggelassen.

  • die gleiche Datei: 1x original, 1x "Alina kopiert".

    • Oscar
    • 25. September 2023 um 17:53

    Wie mumpel bereits geschrieben hat, würde es mit einem Hex-Editor gehen.

    BTW: der beste kostenlose Hex-Editor, den ich kenne, ist HxD (https://mh-nexus.de/de/hxd/).

  • die gleiche Datei: 1x original, 1x "Alina kopiert".

    • Oscar
    • 25. September 2023 um 17:18
    Zitat von Alina

    ich öffne das Bild bild.png mal mit dem Editor und kopiere den gesamten "Text".

    Wie kommst Du darauf, dass ein (Text-)Editor eine Bilddatei (binäre Daten) korrekt (1:1) auslesen kann?

    Ein Editor öffnet eine Datei als Text (zumindest wird er es versuchen) und interpretiert die Daten als ASCII, UTF8, UTF16 oder was auch immer, aber ganz sicher nicht als binäre Daten.

    Wenn Du diese "Interpretation" abspeicherst, kommt irgendein Text-Kauderwelsch raus, aber eben nicht die ursprünglichen Binärdaten und somit kein (heiles) Bild.

  • AutoIt-SQLite to HTML

    • Oscar
    • 24. September 2023 um 09:13
    Zitat von PSblnkd

    Kennt jemand die Ursache oder einen Ausweg?

    Wie soll da jemand helfen können?

    Wo ist Dein Script?

    Wo ist eine (Beispiel-) Datenbankdatei?

    Welchen File-Converter meinst Du (Link)?

    Was erwartest Du als Ergebnis?

  • Analyse von Daten

    • Oscar
    • 24. September 2023 um 09:02
    Zitat von Alina

    Frage mich gerade was Sinnvoller ist.
    Nach dem Anzeigen in der Listview (?) alle Werte in Datei(en) speichern oder erst wenn ich z. B. einen der Button 1 bis Button 10 drücke. Sinnvoll wäre zweiteres, weil ich dann nur das abspeichere, was ich brauche, also wenn cih den dementsprechende Button drücke.

    Wenn das keine rhetorische Frage ist, dann solltest Du uns erstmal darüber aufklären, wozu diese Analyse überhaupt gut sein soll.

    Den Sinn dahinter habe ich jedenfalls noch nicht verstanden.

  • Analyse von Daten

    • Oscar
    • 23. September 2023 um 14:01

    Also ohne die ganzen "Xer+"-Spalten, sieht das jetzt so aus:

    AutoIt
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    
    #Region ### START Koda GUI section ### Form=
    Global $Form1 = GUICreate("Form1", 1080, 610)
    Global $Input1 = GUICtrlCreateInput("Ich bin eine Testnachricht.", 5, 5, 1000, 20)
    Global $Input2 = GUICtrlCreateInput("339499542504568557573498571424356429481419498666371439578426583629574422585557423487", 5, 30, 1000, 20)
    Global $Teiler = GUICtrlCreateLabel("Teiler", 5, 75, 25, 25)
    Global $aButton[10], $aText = StringSplit('1|2|3|4|5|6|7|8|9|10', '|', 2)
    For $i = 0 To 9
        $aButton[$i] = GUICtrlCreateButton($aText[$i], 35 + 25 * $i, 65, 25, 25)
    Next
    Global $Button11 = GUICtrlCreateButton("Analyse starten", 350, 65, 155, 25)
    Global $aListview[10], $aText = StringSplit('1er|2er|3er|4er|5er|6er|7er|8er|9er|10er', '|', 2)
    For $i = 0 To 9
        $aListview[$i] = GUICtrlCreateListView($aText[$i], 10 + 105 * $i, 100, 100, 500)
    Next
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    Global $nMsg, $sNumbers, $laenge
    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                Exit
            Case $Button11
                $sNumbers = GUICtrlRead($Input2)
                $laenge = StringLen($sNumbers)
                For $i = 0 To 9
                    If ($i = 0) Or (Not Mod($laenge, $i + 1)) Then
                        GUICtrlSetBkColor($aButton[$i], 0x00FF00) ; Grün
                        _AddToListview($aListview[$i], $sNumbers, $i + 1)
                    Else
                        GUICtrlSetBkColor($aButton[$i], 0xFF0000) ; Rot
                    EndIf
                Next
        EndSwitch
    WEnd
    
    Func _AddToListview($idListview, $sInput, $iChar)
        Local $aFrequency = _CreateArray($sInput, $iChar)
        _GUICtrlListView_DeleteAllItems($idListview)
        For $i = 0 To UBound($aFrequency) - 1
            GUICtrlCreateListViewItem($aFrequency[$i][0] & ' : ' & $aFrequency[$i][1], $idListview)
        Next
        _GUICtrlListView_SetColumnWidth($idListview, 0, $LVSCW_AUTOSIZE)
    EndFunc
    
    Func _CreateArray($sInput, $iChar)
        Local $mFreq[]
        $sInput = StringRegExpReplace($sInput, "[^0-9]", "") ; Trennzeichen und Leerzeichen entfernen
    
        For $i = 0 To StringLen($sInput) - $iChar Step $iChar
            $mFreq[StringMid($sInput, $i + 1, $iChar)] += 1
        Next
        Local $aKeys = MapKeys($mFreq), $iCnt = UBound($aKeys), $aFrequency[$iCnt][2]
        For $i = 0 To $iCnt - 1
            $aFrequency[$i][0] = $aKeys[$i]
            $aFrequency[$i][1] = $mFreq[$aKeys[$i]]
        Next
        _ArraySort($aFrequency, 1, 0, 0, 1)
        Return $aFrequency
    EndFunc
    Alles anzeigen
  • Analyse von Daten

    • Oscar
    • 23. September 2023 um 13:22
    Zitat von Alina

    Wie bzw. wo baue ich nun die anderen ein. Also "2er+", "3er+" "und 4er+".

    Worin besteht denn der Unterschied zwischen "2er" und "2er+" bzw. "3er" und "3er+" usw.?

    Oben hast Du die Scripte identisch geschrieben. Das ergibt doch gar keinen Sinn!?

  • Analyse von Daten

    • Oscar
    • 23. September 2023 um 09:25
    Zitat von Alina

    Wenn ich Button11 drücke markiert er die Buttons 1-10 rot oder grün.

    Das geht aber viel kürzer (Stichwort Array):

    AutoIt
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    Global $Form1 = GUICreate("Form1", 615, 437, 192, 124)
    Global $Input1 = GUICtrlCreateInput("Ich bin eine Testnachricht.", 5, 5, 500, 20)
    Global $Input2 = GUICtrlCreateInput("339499542504568557573498571424356429481419498666371439578426583629574422585557423487", 5, 30, 500, 20)
    Global $Teiler = GUICtrlCreateLabel("Teiler", 5, 75, 25, 25)
    Global $aButton[10], $aText = StringSplit('1,2,3,4,5,6,7,8,9,10', ',', 2)
    For $i = 0 To 9
        $aButton[$i] = GUICtrlCreateButton($aText[$i], 35 + 25 * $i, 65, 25, 25)
    Next
    Global $Button11 = GUICtrlCreateButton("Analyse starten", 350, 65, 155, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    Global $nMsg, $laenge
    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                Exit
            Case $Button11
                $laenge = StringLen(GUICtrlRead($Input2))
                GUICtrlSetBkColor($aButton[0], 0x00FF00) ; Grün, weil "1" immer zutrifft
                For $i = 1 To 9
                    If Not Mod($laenge, $i + 1) Then
                        GUICtrlSetBkColor($aButton[$i], 0x00FF00) ; Grün
                    Else
                        GUICtrlSetBkColor($aButton[$i], 0xFF0000) ; Annahme für Rot
                    EndIf
                Next
        EndSwitch
    WEnd
    Alles anzeigen

    Für das Ergebnis willst Du ein Listview, oder?

    Mache ich später, habe jetzt nicht genug Zeit.

  • Analyse von Daten

    • Oscar
    • 21. September 2023 um 19:09

    Ich weiß nicht, ob ich die Aufgabe richtig verstanden habe, aber auf jeden Fall kann man das mit dem Map-Datentyp ganz gut lösen.

    Hier mal als universelle Funktion:

    AutoIt
    #include <Array.au3>
    
    Local $str = "33 94 99 54 25 04 56 85 57 57 34 98 57 14 24 35 64 29 48 14 19 49 86 66 37 14 39 57 84 26 58 36 29 57 44 22 58 55 57 42 34 87"
    
    Local $aFrequency = _CreateArray($str, 2)
    _ArrayDisplay($aFrequency)
    
    Local $aFrequency = _CreateArray($str, 3)
    _ArrayDisplay($aFrequency)
    
    Local $aFrequency = _CreateArray($str, 4)
    _ArrayDisplay($aFrequency)
    
    Func _CreateArray($sInput, $iChar)
        Local $mFreq[]
        $sInput = StringRegExpReplace($sInput, "[^0-9]", "") ; Trennzeichen und Leerzeichen entfernen
    
        For $i = 0 To StringLen($sInput) - $iChar Step $iChar
            $mFreq[StringMid($sInput, $i + 1, $iChar)] += 1
        Next
        Local $aKeys = MapKeys($mFreq), $iCnt = UBound($aKeys), $aFrequency[$iCnt][2]
        For $i = 0 To $iCnt - 1
            $aFrequency[$i][0] = $aKeys[$i]
            $aFrequency[$i][1] = $mFreq[$aKeys[$i]]
        Next
        _ArraySort($aFrequency, 1, 0, 0, 1)
        Return $aFrequency
    EndFunc
    Alles anzeigen
  • Braucht es das?

    • Oscar
    • 17. September 2023 um 11:47
    Zitat von Peter S. Taler

    okay das mit den UDfs macht Sinn für local

    Nicht nur da!

    In Funktionen sollten (möglichst) keine globalen Variablen verwendet werden. Lieber die Variablen als Parameter übergeben und das Ergebnis mit Return zurückgeben.

    Das lässt sich zwar nicht immer realisieren, aber grundsätzlich versuche ich mich daran zu halten.

    Bei rekursiven Funktionen sind lokale Variablen sowieso wichtig.

    Statische (lokale) Variablen sind oftmals auch sehr hilfreich.

  • Datum und Uhrzeit formatieren

    • Oscar
    • 17. September 2023 um 07:07

    Warum benutzt Du nicht das SHORTDATEFORMAT? Damit geht das einfacher:

    AutoIt
    #include <DateTimeConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <MsgBoxConstants.au3>
    
    GUICreate("Test", 160, 80)
    Global $idDate = GUICtrlCreateDate("", 10, 10, 120, 20, $DTS_SHORTDATEFORMAT)
    Global $idTime = GUICtrlCreateDate("", 10, 40, 100, 20, $DTS_TIMEFORMAT)
    GUISetState(@SW_SHOW)
    
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                ExitLoop
    
        EndSwitch
    WEnd
    
    Global $sDate = GUICtrlRead($idDate)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sDate = ' & $sDate & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    Global $sTime = GUICtrlRead($idTime)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sTime = ' & $sTime & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    
    Global $sDt = StringRegExpReplace($sDate, '(\d{2})\.(\d{2})\.(\d{4})', '$3$2$1')
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sDt = ' & $sDt & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    Global $sTm = StringReplace($sTime, ':', '')
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sTm = ' & $sTm & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    Alles anzeigen

    P.S.: Es wäre schön, wenn Du zukünftig wenigstens ein funktionsfähiges Beispielscript posten würdest. Nicht jeder Helfer ist gewillt, erstmal ein Beispiel zu schreiben.

  • Gibt es das? *.au3 vs. *.exe

    • Oscar
    • 16. September 2023 um 16:47
    Zitat von Peter S. Taler

    Global $sOutput[0] = [-1] --->wird von ISN Studio NICHT bemängelt.

    Dann ist der Syntax-Check in ISN nicht korrekt!

    Ein Null-Elemente-Array darf bei der Deklarierung nicht mit Werten gefüllt werden.

  • Gibt es das? *.au3 vs. *.exe

    • Oscar
    • 16. September 2023 um 09:18
    Zitat von Peter S. Taler

    Global $sOutput[0] = [-1] ---> Richtig

    Nein, das ist auch falsch! ("Array variable has incorrect number of subscripts or subscript dimension range exceeded.")

    So, wäre es korrekt: Global $sOutput[1] = [-1]

    oder so: Global $sOutput[] = [-1]

  • Gibt es das? *.au3 vs. *.exe

    • Oscar
    • 15. September 2023 um 18:49
    Zitat von Peter S. Taler

    was soll falsch sein an:


    Global $sOutput[0] = -1

    Mit "Global" deklarierst Du das Array und da Du 0 (also kein Element) angibst, darfst Du auch keine Wertzuweisung vornehmen (die wäre bei der Deklaration so auch falsch).

    AutoIt erlaubt zwar mittlerweile ein Array mit null Elementen zu deklarieren, aber bevor Du auf ein Element zugreifst, musst Du das Array vergrößern.

    So wäre es ok:

    AutoIt
    Global $sOutput[0]
    ReDim $sOutput[1]
    $sOutput[0] = -1
  • Treeview Click-Ereignisse?

    • Oscar
    • 5. September 2023 um 17:05

    Script?

  • ListView Ctrl+A alles selektieren

    • Oscar
    • 3. September 2023 um 17:50

    Du brauchst nicht durch alle Items iterieren.

    Es reicht: _GUICtrlListView_SetItemSelected($hActive, -1)

    "-1" ist für alle Items.

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™