Hier mal ein kleines Retro-AutoIt Motiv ![]()
Hier mal ein kleines Retro-AutoIt Motiv ![]()
OK, dann sind die sicher zu identifizierenden Felder: "Tag/Uhrzeit", "Ticket Status" (da zwischen zwei eindeutigen Feldern), "Ticket Thema", "Ticket ID" und "Erstellt von". Jetzt brauchst du eigentlich nur alle Varianten von "Unterkategorie" abprüfen und somit erhälts du automatisch die dazwischen liegenden Felder "Kategorie" und "Grund".
Das Ticket-Thema "Störung Dienste" ist also fix? Da steht nie was anderes?
Und bei den anderen Feldern können ausschließlich die in der Combo enthaltenen Begriffe auftauchen?
Du kannst ja auch während der Eingabe die Schriftfarbe ändern um auf Unterschreiten der Länge aufmerksam zu machen. Das Bsp. ermöglicht dir beliebig viele Inputs mit dieser Funktion zu überwachen, die jeweils unterschiedliche Längen zulassen. Du kannst auch während der Programmausführung die Längen Überschreiben, indem du die Funktion "_SetTextLimit" erneut aufrufst.
$hGui = GUICreate('Test')
$cIn1 = GUICtrlCreateInput('', 20, 20, 150, 20)
_SetTextLimit($cIn1, 6) ; == Mindestlänge: 6
$cIn2 = GUICtrlCreateInput('', 20, 60, 150, 20)
_SetTextLimit($cIn2, 10) ; == Mindestlänge: 10
GUISetState()
[/autoit] [autoit][/autoit] [autoit]GuiRegisterMsg($WM_COMMAND, 'WM_COMMAND')
[/autoit] [autoit][/autoit] [autoit]While 1
Switch GUIGetMsg()
Case -3
Exit
EndSwitch
WEnd
Func _SetTextLimit($_iControl, $_iLimit, $_sFunc='')
Local $hCtrl = $_iControl
If Not IsHWnd($hCtrl) Then $hCtrl = GUICtrlGetHandle($hCtrl)
Local Static $aCtrl
Local $aTmp[1][2]
If $_sFunc = 'get' Then
If Not IsArray($aCtrl) Then Return -1
For $i = 0 To UBound($aCtrl) -1
If $aCtrl[$i][0] = $hCtrl Then Return $aCtrl[$i][1]
Next
Return -1
EndIf
If Not IsArray($aCtrl) Then
$aTmp[0][0] = $hCtrl
$aTmp[0][1] = $_iLimit
Else
$aTmp = $aCtrl
Local $fMatch = False
For $i = 0 To UBound($aTmp) -1
If $aTmp[$i][0] = $hCtrl Then
$aTmp[$i][1] = $_iLimit
$fMatch = True
ExitLoop
EndIf
Next
If Not $fMatch Then
ReDim $aTmp[UBound($aTmp)+1][2]
$aTmp[UBound($aTmp)-1][0] = $hCtrl
$aTmp[UBound($aTmp)-1][1] = $_iLimit
EndIf
EndIf
$aCtrl = $aTmp
EndFunc
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
Local $hWndFrom, $iIDFrom, $iCode, $hWndEdit, $iLen
$hWndFrom = $ilParam
$iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
Local $iMaxLen = _SetTextLimit($iIDFrom, 0, 'get')
If $iMaxLen = -1 Then Return $GUI_RUNDEFMSG
$hWndEdit = GUICtrlGetHandle($iIDFrom)
$iLen = StringLen(GUICtrlRead($iIDFrom))
If $iLen < $iMaxLen Then ; == wenn Überschreiten markiert werden soll, einfach ">" statt "<" verwenden
GUICtrlSetColor($iIDFrom, 0xFF0000)
Else
GUICtrlSetColor($iIDFrom, 0x000000)
EndIf
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND
Was ich bisher vermisse, ist die Systematik der Zielaufschlüsselung. Solange diese fehlt ist das hier nur unproduktives Rätselraten!
Beschreibe deine Zielfelder:
• Anzahl
• Inhalt / Format des Inhalts
• Inhalt vorhergehendes Feld grenzt sich ab durch... (nicht Trennzeichen, sondern Unterschiede zwischen den Feldern)
• Inhalt folgendes Feld grenzt sich ab durch...
Wenn diese Angaben vorhanden sind, kann man sich die eindeutigen Feldzuordnungen als erstes herauspicken und anschließend nach links/rechts iterieren um die Zuordnung zu den anderen Feldern zu Erkennen.
Mal mein Senf dazu:
Wenn überhaupt ein neues Logo, dann sollte kein Bezug auf das aktuelle Jahr vorhanden sein.
Gründungsjahr ist OK - aber das reicht auch.
Bin eigentlich der Meinung, dass man das Logo nicht häufig wechseln sollte. Ein Forum sollte auch Stabilität und Kontinuität ausstrahlen, was sich auch im Erscheinungsbild niederschlagen sollte.
Wenn das Listview den Fokus verliert, ist die Markierung grau. Mit meiner UDF kannst du das ändern und auch eigene Farben verwenden.
Dann kann mir mein derzeitiger Anbieter doch net sagen ich würde über Satelit Inet kriegen ... oder versteh ich das nun falsch?
Das verstehst du falsch.
- Du kannst Daten herunterladen mit großer Bandbreite und somit extrem schnell.
- Du kannst Daten hochladen mit großer Bandbreite auch extrem schnell.
Nur die Reaktionszeiten sind bei Internet via Satellit aufgrund der beschriebenen Signalwege nunmal nicht unter 0,48 s zu drücken. Für 99% der Internetanwendungen ist das auch völlig in Ordnung. Wenn du allerdings übers INet zocken willst, bist du mit Satelliten-Internet schlecht beraten.
Ich kann dir keine Erfahrungen, sondern nur eine Berechnung bieten:
• Höhe Satellit: 36.000 km
• Strecke Hin / Zurück ~ 72.000 km
• Funkwelle breitet sich mit Lichtgeschwindigkeit aus: 300.000 km/s
= 0,24 s
Das heißt:
- Mausklick an deinem PC Zeitpunkt: 0
- Signal kommt an Ggenstelle an: +0,24 s
- Gegenstelle reagiert und du erhältst die Antwort: +0,24 s
Das heißt, knapp 1/2 Sekunde nach einer Aktion von dir ist eine Reaktion des Gegners auf deinem PC sichtbar. (Verarbeitungszeiten auf dem PC vernachlässigt)
Kannst du meine Web-Cam App verwenden: https://autoit.de/index.php?page…1752#post231752
So wie ich das sehe, ist UAC der "Schuldige". ![]()
Habe ich bei mir aber perse deaktiviert. Tidy ließe sich sicher auch anders schreiben, um nicht mit UAC zu kollidieren. Ich selber verwende Tidy gar nicht, aber wenn echtes Interesse an einer UAC-unabhängigen Variante bestehen sollte, könnte ich mir vorstellen das mit Lua zu schreiben. (Ist aber nicht von heute auf morgen erledigt)
Ausserdem geht es nunmal einfacher und schneller als von Hand und ab und zu muss es halt schnell gehen
Das hängt nur von den eigenen Fähigkeiten ab. Ich garantiere dir, dass ich eine GUI mit diversen Elementen ohne Koda mindestens genauso schnell, aber sauberer erstelle als irgendwer mit Koda. ![]()
..oder statt der vielfachen Vergleiche, teste mit StringInStr:
[autoit]If StringInStr(" 5 15 21 27 29 48 ", ' ' & $1 & ' ') Then
[/autoit]
Viele Wege führen nach Rom.
Pooh - Leichenschänder. Mal auf das letzte Postdatum geschaut? ![]()
Einfach die Zeile in der WinAPIEx auskommentieren und fertig. Zwischenzeitig sind viele der dort separat deklarierten Konstanten auch Bestandteil des regulären AutoIt.
aber es könnte auch sein, dass die Funktion Besitzer des Ordners nicht unterstützt wird(?)
Genau da liegt der Hund begraben. .GetDetailsOf gilt ausschließlich für Dateien.
denn wie will man zum Beispiel mit Floor diese Linie (im Anhang) bestimmen?
Ist es tatsächlich wichtig, ob diese Linie geklickt wird (erst mal versuchen diesen Pixel genau zu treffen)? Wenn du ein Spiel mit Kästchen 40x40 machst, halte ich die Zuordnung der Linien für irrelevant.
Aber nur bei Oscars und meiner Version sind für 6 Zahlen auch nur 6 Versuche erforderlich. ![]()
Alle anderen arbeiten nach dem Prinzip: Ziehe Zufallszahl solange, bis du eine noch nicht gezogene findest. Je kleiner die zur Verfügung stehende Zahlenmenge, desto länger kann das dauern. Denn wenn ich z.B. 2 aus 4 ziehen soll, erwische ich zu 50% immer dieselbe Zufallszahl.
Bei Oscar und mir ist es völlig egal, welche Zufallszahl gezogen wird, da diese nur den Index des Ergebnisses liefert. Anschließend wird an diese Position der letzte Wert aus dem Zahlenraum geschrieben und der Bereich um eins verkleinert. Doppelziehung unmöglich, selbst wenn Random immer denselben Wert liefern würde. ![]()
Hier mal ein Bsp. mit 20x20 Kästchen.
$gui = GUICreate('Test', 420, 420)
; Linie=1px -- Kästchen = 20px
; Zeichnen:
For $i = 0 To 19
GUICtrlCreateLabel('', 21*$i, 0, 1, 420)
GUICtrlSetBkColor(-1, 0x000000)
For $j = 0 To 19
GUICtrlCreateLabel('', 21*$i, 21*$j, 420, 1)
GUICtrlSetBkColor(-1, 0x000000)
Next
Next
GUISetState()
While 1
$aMsg = GUIGetMsg(1)
Switch $aMsg[0]
Case -3
Exit
Case $GUI_EVENT_PRIMARYDOWN
;~ $horicontal = Ceiling($aMsg[3]/21) ; == für 1-basierte Angabe
;~ $vertical = Ceiling($aMsg[4]/21) ; == für 1-basierte Angabe
$horicontal = Floor($aMsg[3]/21) ; == für 0-basierte Angabe
$vertical = Floor($aMsg[4]/21) ; == für 0-basierte Angabe
ConsoleWrite($horicontal & ', ' & $vertical & @LF)
EndSwitch
WEnd