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

  • Hackit

    • BugFix
    • 11. Dezember 2013 um 23:20
    Zitat von alpines

    Das Dekompilieren selbst ist glaub ich nicht strafbar, immerhin benutzt du die Software ja, also möchtest du ja auch wissen was sie macht.
    Was hingegen nicht erlaubt ist ist die Weitergabe von Dekompilern (soweit ich weiß) und das weitergeben dekompilierter Exen.


    Bitte nicht schooon wieder!!
    SELBSTREDEND ist das Dekompilieren illegal, da es gegen die AutoIt-Lizenz verstößt. (wer nicht weiß, dass es die gibt, sollte sich dringend damit vertraut machen bevor er von legalem Dekompilieren schwätzt!)

    Und dazu bedarf es auch keines Juristen, sondern ausschließlich der Fähigkeit des Buchstaben-Aneinanderreihens, umgangssprachlich als "Lesen" bezeichnet. :cursing:
    Mehr möchte ich dazu nicht mehr sagen (müssen).

  • komplexe Zahlen (UDF)

    • BugFix
    • 11. Dezember 2013 um 10:55

    Ah.. Komplexe Zahlen, das hatte ich in der Abiturstufe als Kurs belegt.

    Feine Lösungen.
    Strahlemann, deines erschlägt einen ja fast mit seiner Komplexität - Respekt :thumbup:
    Eines mal als Tipp von einem alten Funktions-Junkie ;)
    - SetError und in der Folgezeile erst den Return ist selten erforderlich
    Da SetError als 3-ten Parameter einen Returnwert enthält, funktioniert "Return SetError(iErr, iExt, iReturn)" super.
    - Gerade bei solch umfangreicher Funktionssammlung nach Vereinfachungen schauen. Du verwendest in der Mehrzahl der Funktionen

    [autoit]

    If Not _CmplxCheck($cmp) Then
    If IsNumber($cmp) Then
    $cmp = _Cmplx($cmp, 0)
    Else
    SetError(1)
    Return 0
    EndIf
    EndIf

    [/autoit]


    Was hältst du hier von:

    [autoit]

    ; == dafür nur:
    If Not __Check($cmp) Then Return SetError(1,0,0)

    Func __Check(ByRef $_cmp)
    If Not _CmplxCheck($_cmp) Then
    If Not IsNumber($_cmp) Then Return False
    $_cmp = _Cmplx($_cmp, 0)
    EndIf
    Return True
    EndFunc

    [/autoit]


    Spart dir 7 Zeilen Code je Aufruf. Bei dem Umfang haut das ganz schön rein. ;)

  • Awesome Teamspeak service

    • BugFix
    • 10. Dezember 2013 um 20:42

    Mögen diesem Anlauf evtl. mehr User wohlgesonnen sein. ;)
    Bei den bisher existierenden 1..2..3..? TS-Versuchen für AutoIt hat das Interesse max. 10..14 Tage vorgehalten. Also versprecht euch besser nicht allzuviel davon.

  • ListView erstellen mit doppeltem Rahmen und Checkbox

    • BugFix
    • 10. Dezember 2013 um 10:49

    Achso, du willst Checkbox UND Icon - das hatte ich übersehen. Meines Wissens sind Beides Elemente, die nur in der ersten Spalte untergebracht werden können. Adhoc fällt mir jetzt nicht ein, wie man das austricksen kann. Eventuell ist mit Ownerdraw was zu Reißen - habe ich in der Form aber bisher nicht probiert. Durchsuch mal das EN-Forum.

  • ListView erstellen mit doppeltem Rahmen und Checkbox

    • BugFix
    • 10. Dezember 2013 um 10:26
    Zitat von johny1099

    Wie kann ich das Icon in Spalte 2 bekommen ?


    Diese Frage wurde gestern oder vorgestern erst gestellt und beantwortet. ;) Einfach mal im Forum auch mitlesen.
    Icon sind nur in Column 0 möglich -- aber: du kannst die ColumnOrder ändern ;). Schau dir einfach die Befehle in der Listview-UDF an bzw. suche nach der Frage im Forum.

  • Drag&Drop Listview? - Disposition

    • BugFix
    • 10. Dezember 2013 um 09:54
    Zitat von vism

    Bis dahin werde ich wahrscheinlich kommen, ABER die Übergabe, die schaffe ich nicht. Bspw. ich will einen Mitarbeiter einplanen.

    Ich markiere den Auftrag, wählen den Mitarbeiter und sage bspw. "disponieren", der Mitarbeiter soll dann im Auftrag auftauchen, und für den Zeitraum aus der Buchung entfernt werden. Ich denke das geht mit Arrays - leider beherrsche ich Listviews nicht und auch die Hilfe, hilft mir nicht wirklich.


    Ich denke mal, das Problem liegt hier einen Ansatz zu finden, wie du Mitarbeiter zum Einen in der Buchung führst und zum Anderen an die Planung übergibst und sie währenddessen aus der Verfügbarkeit entfernst.
    Hier mal mein spontaner Gedankenansatz, den du dann versuchen kannst umzusetzen.
    - Jeder Mitarbeiter wird identifiziert durch eine Zahl - und zwar Potenzen von 2
    Somit kannst du eine Summe bilden aus der mit: BitXOr der Kollege zu-/oder abgebucht wird und mit BitAnd seine Verfügbarkeit ermittelbar ist
    - Du benötigst ein Zeitarray, je nach Arbeitszeiteinheit gegliedert (10, 12 od. 15 min Einheiten, also 6, 5 od. 4 Einträge je Stunde)
    Nun verknüpst du Zeit und Mitarbeitersumme:
    - In der Summe Verfügbarkeit wird der Mitarbeiter "abgebucht", die neue Summe wird in dem entsprechenden Zeitraum abgespeichert (bzw. aus vorhandenen Werten mittels BitXOr neu gebildet!)
    - Für das Listview brauchst du eine gegenteilige Summe, in der der Mitarbeiter "zugebucht" wird
    - Im Listview kannst du die Summe an das Item mit _GuiCtrlListview_SetItemParam zuweisen (abfragbar mit der Umkehrfunktion ...GetItemParam)
    ggf. je nach Struktur deines Listview, ist es einfacher in einem Array ( [Zeilen_Listview][Spalten_Listview] ) direkt die "Mitarbeitersumme" abzuspeichern
    Übergabe in das Listview kannst du mit Klick in die entsprechende Spalte realisieren.

    Viel Spaß bei der Umsetzung.

  • Variable Func Name z.B. varfunc()

    • BugFix
    • 8. Dezember 2013 um 13:22

    Du hast zwei Möglichkeiten:
    - Wie bereits benannt "Execute"
    oder (was ich bevorzuge)
    - Verwende nur eine Funktion aus der Listviewauswertung heraus und übergib den Inhalt des Item als Parameter. Dann kannst du in dieser Funktion je nach Parameterinhalt entsprechend weiterarbeiten.

    Eines ist aber immer zu beachten bei WM_...Funktionen: Die aufgerufenen Funktionen sollten schnellstmöglich abgehandelt werden. Also niemals eine MsgBox oder Userinteraktion in einer dieser Funktionen! Sonst sind Crashs vorprogrammiert.

  • TreeviewOrder.au3 -- Treeview Inhalt in Datei speichern und aus Datei laden

    • BugFix
    • 4. Dezember 2013 um 14:03

    Ich habe folgendes Bsp. verwendet:

    Spoiler anzeigen
    [autoit]

    #include <GuiTreeView.au3>
    #include <TreeViewConstants.au3>
    #include <WindowsConstants.au3>
    #include "TreeviewOrder.au3"

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

    Global $aTreeview
    Global $File = @ScriptDir & '\OrderTree.txt'

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

    $hGUI = GUICreate("Test", 350, 215)
    $hTV = GUICtrlCreateTreeView(5, 5, 180, 200, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE)
    $btFile = GUICtrlCreateButton('Load From File', 245, 45, 100, 20)
    $btWrite = GUICtrlCreateButton('Write To File', 245, 85, 100, 20)
    GUISetState()

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

    While 1
    Switch GUIGetMsg()
    Case -3
    Exit
    Case $btFile
    _GUICtrlTreeView_BeginUpdate($hTV)
    $aTreeview = _GUICtrlTreeView_CreateItemFromOrderFile($File, $hTV)
    _GUICtrlTreeView_Expand($hTV)
    $hItem = _GUICtrlTreeView_GetFirstChild($hTV, $aTreeview[0][0])
    _GUICtrlTreeView_Expand($hTV, $hItem, False)
    While 1
    $hItem = _GUICtrlTreeView_GetNextSibling($hTV, $hItem)
    If $hItem = 0 Then ExitLoop
    _GUICtrlTreeView_Expand($hTV, $hItem, False)
    WEnd
    _GUICtrlTreeView_EndUpdate($hTV)
    Case $btWrite
    Local $sWrite = _GUICtrlTreeView_GetItemOrder($hTV)
    Local $fH = FileOpen($File, 2)
    FileWrite($fH, $sWrite)
    FileClose($fH)
    EndSwitch
    WEnd

    [/autoit]


    In der "OrderTree.txt" steht:

    Code
    0|a-zA-Z0-9 _,.+-|µ€§%$&
    0.1|äöü-ÄÖÜ-ß-&%$§


    und das wird angezeigt:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    In deinem Post sehe ich kein Bild (bei mir wird nix angezeigt). Code ebenfalls nicht, somit ist es schwer darauf einzugehen.

    Dateien

    Test.png 8,29 kB – 0 Downloads
  • TreeviewOrder.au3 -- Treeview Inhalt in Datei speichern und aus Datei laden

    • BugFix
    • 4. Dezember 2013 um 09:17
    Zitat von morpuvec

    aber wenn man nur 1 Item im Treeview hat, bricht das Script ohne Fehlermeldung ab.(ok nur 1 item macht nicht viel Sinn)

    Gefixed

    Zitat von morpuvec

    Dann hab ich noch ein Problem mit Umlauten beim wieder einlesen aus einer Txt datei. Der Text dahinter fehlt. (boom ist drin)

    Habe ich jetzt behoben. Folgende Zeichen plus Leerzeichen sind für die Item zulässig:
    a-z A-Z 0-9 ß ä ö ü Ä Ö Ü _ , + - | µ € § % $ &

  • Ordner samt Unterordner in einen TreeView

    • BugFix
    • 3. Dezember 2013 um 14:40

    Guckst du

  • Happy Burtstag Der_Doc und BugFix

    • BugFix
    • 28. November 2013 um 22:12

    He, Danke allen Gratulanten.
    Ich habe ein Bier auf euer Wohl trinken lassen. :rofl:

    Bin gerade von der Arbeit gekommen und werde jetzt nur noch mein Bett liebkosen. ;)

  • Zeigerbeschleunigung verbessern

    • BugFix
    • 26. November 2013 um 19:39

    Dazu gibt es

    [autoit]

    _WinAPI_SystemParametersInfo

    [/autoit]

    mit der Action-Variable: $SPI_SETMOUSESPEED
    Details findest du im Forum, ich habe dazu mal eine Funktion mit Auflistung aller Aktionen gepostet.

  • Transparente Grafiken (Pfeile) über die GUI legen und wieder entfernen...

    • BugFix
    • 26. November 2013 um 14:45

    Mach dir nicht soviel Streß: Verwende Wink
    Da zeichnest du einfach auf, was tu tust und kannst anschließend interaktive Messageboxen einbauen u.v.m.
    Ich hatte hier im Forum schonmal eine Programmdemo damit erstellt: Demo OwnHotkey

  • Listview Fehler in Funktion?

    • BugFix
    • 26. November 2013 um 14:40

    Ohne jedwedes Skript müssen wir genau das tun:

    [Blockierte Grafik: http://piks.nl/tOU]

  • Pflichtfelder (Radio Button, Edit Feld) vor dem Absenden des Formulars auf Inhalt prüfen

    • BugFix
    • 26. November 2013 um 13:36

    Das geht alles. Ich mach gleich mal ein kleines Bsp.

    Aber was ich noch zeigen wollte: So nutzt man Arrays sinnvoll. Ich erstelle hier alle Groups mit Radio in einem Rutsch. Das sind 21 Zeilen Code inkl. Deklaration, Funktion und Funktionsaufruf in Schleife. Du hast dafür ca. 90 Zeilen benötigt.

    Spoiler anzeigen
    [autoit]


    #include <WindowsConstants.au3>
    GUICreate('Test', 1600, 1000)

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

    Global $aLeftTopTitle[7][3] = [[100,190,"1. Objektivität / Fairness "],[100,420,"2. Kompetenz in seiner Aufgabe "],[100,640,"3. Verständnis für Anliegen/Probleme "], _
    [510,190,"4. Hilfsbereitschaft "],[510,420,"5. Loyalität "],[510,640,"6. Fähigkeit zum Vermitteln von Zusammenhängen "],[920,190,"7. Motivation "]]
    Global $aCtrlArray[7]
    For $i = 0 To 6
    $aCtrlArray[$i] = _Group_w_Radio($aLeftTopTitle[$i][2], $aLeftTopTitle[$i][0], $aLeftTopTitle[$i][1], 350, 200)
    Next

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

    GUISetState()

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

    Do
    Until GUIGetMsg() = -3

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

    Func _Group_w_Radio($_sTitle, $_iX, $_iY, $_iW, $_iH)
    Local $aCtrl[8] ; == 6*Radio, 1*Picture, 1*Edit
    Local $iW_radio = 40 ; == HIER kannst du variieren im Abstand der Radios
    GUICtrlCreateGroup($_sTitle, $_iX, $_iY, $_iW, $_iH)
    GUICtrlSetFont(-1, 10, 120, 0, "Arial")
    For $i = 0 To 5 ; == Radio erstellen
    $iStyle = Default
    If $i = 0 Then $iStyle = $WS_GROUP
    $aCtrl[$i] = GUICtrlCreateRadio( $i+1, $_iX +20 +$i*$iW_radio, $_iY +30, $iW_radio, 20, $iStyle)
    Next
    $aCtrl[6] = GUICtrlCreatePic("", $_iX +20 +200, $_iY +25, 44, 44)
    $aCtrl[7] = GUICtrlCreateEdit("", $_iX +20, $_iY +70, $_iW -40, $_iH -80)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    Return $aCtrl
    EndFunc

    [/autoit]

    Edit:

    Ich habe den Code jetzt mal etwas überarbeitet und die Smiley-Aktivierung eingefügt:

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    GUICreate('Test', 1600, 1000)

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

    Global $sPathIcon = "C:\Users\BugFix\Pictures\SMILEYS" ; == Smileys im Anhang, Pfad anpassen.

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

    Global $aPict[6] = [ _
    $sPathIcon & "1.ico", _
    $sPathIcon & "2.ico", _
    $sPathIcon & "3.ico", _
    $sPathIcon & "4.ico", _
    $sPathIcon & "5.ico", _
    $sPathIcon & "6.ico"]

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

    Global $aLeftTopTitle[7][3] = [[100,190,"1. Objektivität / Fairness "],[100,420,"2. Kompetenz in seiner Aufgabe "],[100,640,"3. Verständnis für Anliegen/Probleme "], _
    [510,190,"4. Hilfsbereitschaft "],[510,420,"5. Loyalität "],[510,640,"6. Fähigkeit zum Vermitteln von Zusammenhängen "],[920,190,"7. Motivation "]]
    Global $aCtrlArray[7]
    For $i = 0 To 6
    $aCtrlArray[$i] = _Group_w_Radio($aLeftTopTitle[$i][2], $aLeftTopTitle[$i][0], $aLeftTopTitle[$i][1], 350, 200)
    Next

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

    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    If $nMsg = -3 Then Exit
    For $i = 0 To 6
    $aTmpCtrl = $aCtrlArray[$i]
    For $j = 0 To 5
    If $nMsg = $aTmpCtrl[$j] Then
    GUICtrlSetImage($aTmpCtrl[6], $aPict[$j])
    ExitLoop(2)
    EndIf
    Next
    Next
    WEnd

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

    Func _Group_w_Radio($_sTitle, $_iX, $_iY, $_iW, $_iH)
    Local $aCtrl[8] ; == 6*Radio, 1*Icon, 1*Edit
    Local $iW_radio = 40 ; == HIER kannst du variieren im Abstand der Radios
    GUICtrlCreateGroup($_sTitle, $_iX, $_iY, $_iW, $_iH)
    GUICtrlSetFont(-1, 10, 120, 0, "Arial")
    For $i = 0 To 5 ; == Radio erstellen
    $iStyle = Default
    If $i = 0 Then $iStyle = $WS_GROUP
    $aCtrl[$i] = GUICtrlCreateRadio( $i+1, $_iX +20 +$i*$iW_radio, $_iY +30, $iW_radio, 20, $iStyle)
    Next
    $aCtrl[6] = GUICtrlCreateIcon("", -1, $_iX +$_iW -60, $_iY +20, 40, 40)
    $aCtrl[7] = GUICtrlCreateEdit("", $_iX +20, $_iY +70, $_iW -40, $_iH -80)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    Return $aCtrl
    EndFunc

    [/autoit]

    So sieht das dann aus:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Dateien

    bsp_ico.png 96,29 kB – 0 Downloads SMILEYS.zip 211,73 kB – 286 Downloads
  • Pflichtfelder (Radio Button, Edit Feld) vor dem Absenden des Formulars auf Inhalt prüfen

    • BugFix
    • 26. November 2013 um 11:29

    Erweitere das Array um ein Feld in dem du den Pfad zum Bild speicherst.
    Dann iteriest du durch das Array und prüfst mit welcher gespeicherten ID die Msg übereinstimmt, das zugehörige Bild verwendest du dann und verläßt die Schleife.

  • Regexp pattern

    • BugFix
    • 26. November 2013 um 10:53

    Dann erstelle mal kurz ein paar Pseudodaten.
    Wichtige Infos (die bisher noch fehlen)
    - sind die Werte allein in einer Zeile
    - wie können Zeilen mit gewollten und mit ungewollten Inhalten aussehen
    - wie soll das Ergebnis aussehen

    Vorher-Nachher Beschreibung ist marginal bei Regex-Anwendung. Regex greift nicht über Inhalte direkt, sondern über die Beschreibung möglicher Inhalte. Also muss diese Beschreibung (das Pattern) genau die Umstände im vorhandenen Text berücksichtigen (Zeilenumbrüche, Match am Anfang, Match am Ende, Text vor/nach dem Match etc. pp.).

  • Happy Birthday Raupi

    • BugFix
    • 26. November 2013 um 10:47

    Der Raupi hat Geburtstag heut
    da woll'n wir gratulieren
    und zu seinem Ehrentag
    was Leckeres servieren:

    [Blockierte Grafik: http://piks.nl/iqX]
    Happy Birthday Alter!
    Und wieder ein verzweifelter Versuch mich einzuholen, aber ich lege übermorgen nach :P

  • Regexp pattern

    • BugFix
    • 26. November 2013 um 10:31

    Hier das Pattern: "(-?\d+(:?,\d+)?\s+EUR)"
    Erkennt:
    -119,77 EUR
    264,34 EUR
    125 EUR

  • CSS Navigation

    • BugFix
    • 26. November 2013 um 10:19
    Zitat von SgtIgram

    javascript is doch toll

    :pinch:
    Damit klar wird, was ich genau will, hier mal die Variante mit JS: http://bug-fix.info/test/nav_js1.html
    Dadurch verbraucht man für die Navigation nur minimal Platz und bekommt doch problemlos alle Informationen.
    Klar ist JS cool, weil man viel mit machen kann. Man kann aber auch viel Mist machen und deshalb wird es von vielen Benutzern sinnvollerweise deaktiviert.
    Ich hätte halt gern gewußt, ob es irgendeinen Trick gibt um mit CSS ein analoges Verhalten zu generieren.

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™