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

Beiträge von nuts

  • Listview mit Gruppen

    • nuts
    • 23. Februar 2017 um 21:36

    Im Prinzip ja.
    Ich überlege gerade noch wie man in einem Rutsch alle Gruppen eines Listviews und die jeweils zugehörigen Items erfasst.

    P.S. Das Arbeiten mit den Gruppen ist wirklich eine Strafarbeit. Ich sitz da schon den ganzen Nachmittag und dreh mich im Kreis. ?(

  • Listview mit Gruppen

    • nuts
    • 23. Februar 2017 um 21:26
    AutoIt
    Func _GetListview_GroupItems($hWnd, $iGroupID)
    
    
        Local $i_max = _GUICtrlListView_GetItemCount($hWnd) - 1    
        Local $i_match, $s_items
    
    
        for $i=0 to $i_max        
           $i_match=_GUICtrlListView_GetItemGroupID($hWnd, $i)        
           if $i_match=$iGroupID then $s_items&= $i & "|"    
       next
    
    
        Return StringSplit(StringTrimRight($s_items, 1), "|")
    
    
    Endfunc
    Alles anzeigen

    So ungefähr könnte es klappen.
    Nunja vielleicht hat ja noch einer eine bessere Lösung.

    Man könnte die Sache noch "beschleunigen" wenn sichergesellt wäre, dass alle Items einer Gruppe einen fortlaufenden Index haben, aber davon kann man glaube ich auch nicht immer ausgehen?

  • Listview mit Gruppen

    • nuts
    • 23. Februar 2017 um 21:01

    Hi,


    ich arbeite gerade an einem Listview mit Gruppen.

    Also Beispiel kann die Hilfe zu _GUICtrlListView_GetItemGroupID herhalten. 8)

    Spoiler anzeigen
    AutoIt
    #include <GUIConstantsEx.au3>
    #include <GuiImageList.au3>
    #include <GuiListView.au3>
    #include <MsgBoxConstants.au3>
    
    
    Example()
    
    
    Func Example()
    	Local $hImage, $idListview
    
    
    	GUICreate("ListView Get Item Group ID", 400, 300)
    	$idListview = GUICtrlCreateListView("", 2, 2, 394, 268)
    	GUISetState(@SW_SHOW)
    
    
    	; Load images
    	$hImage = _GUIImageList_Create()
    	_GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($idListview, 0xFF0000, 16, 16))
    	_GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($idListview, 0x00FF00, 16, 16))
    	_GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($idListview, 0x0000FF, 16, 16))
    	_GUICtrlListView_SetImageList($idListview, $hImage, 1)
    
    
    	; Add columns
    	_GUICtrlListView_AddColumn($idListview, "Column 1", 100)
    	_GUICtrlListView_AddColumn($idListview, "Column 2", 100)
    	_GUICtrlListView_AddColumn($idListview, "Column 3", 100)
    
    
    	; Add items
    	_GUICtrlListView_AddItem($idListview, "Row 1: Col 1", 0)
    	_GUICtrlListView_AddSubItem($idListview, 0, "Row 1: Col 2", 1)
    	_GUICtrlListView_AddSubItem($idListview, 0, "Row 1: Col 3", 2)
    	_GUICtrlListView_AddItem($idListview, "Row 2: Col 1", 1)
    	_GUICtrlListView_AddSubItem($idListview, 1, "Row 2: Col 2", 1)
    	_GUICtrlListView_AddItem($idListview, "Row 3: Col 1", 2)
    
    
    	; Build groups
    	_GUICtrlListView_EnableGroupView($idListview)
    	_GUICtrlListView_InsertGroup($idListview, -1, 1, "Group 1")
    	_GUICtrlListView_InsertGroup($idListview, -1, 2, "Group 2")
    	_GUICtrlListView_SetItemGroupID($idListview, 0, 1)
    	_GUICtrlListView_SetItemGroupID($idListview, 1, 2)
    	_GUICtrlListView_SetItemGroupID($idListview, 2, 2)
    
    
    	; Display Item 3 group ID
    	MsgBox($MB_SYSTEMMODAL, "Information", "Item 3 Group ID: " & _GUICtrlListView_GetItemGroupID($idListview, 2))
    
    
    	; Loop until the user exits.
    	Do
    	Until GUIGetMsg() = $GUI_EVENT_CLOSE
    	GUIDelete()
    EndFunc   ;==>Example
    Alles anzeigen

    Und zwar geht es mir jetzt darum herauszufinden welche Items z.B. in Gruppe 2 sind. Hie wären das Item 2 und Item 3.

    Mir fällt dazu nur eine Lösung ein: man durchsucht das gesamte Listview und fragt zu jedem Item per _GUICtrlListView_GetItemGroupID die zugehörige ID ab und sortiert diese ID's dann selbst nochmal. :S
    Was meint ihr dazu? Geht das auch einfacher?
    Gesucht: _GUICtrlListView_GetGroupitems($hwnd, $groupID) :D


    Gruß

    nuts

  • XHTML Parsing oder String nach bestimmten Inhalten suchen

    • nuts
    • 13. Juli 2016 um 14:12

    Für ganz einfache XML Verarbeitung würde ich dir da einfach "_Stringbetween" empfehlen.
    Das basiert auch auf RegEx, aber du musst dich nicht um die Pattern kümmern.

    Hier gibt es auch eine brauchbare UDF für XML's: https://www.autoitscript.com/forum/topic/17…-support-topic/
    Ist allerdings etwas tricky in der Anwendung.

  • Array / Zahlen vergleichen - Lösungsansatz

    • nuts
    • 6. Juli 2016 um 15:02

    Habs geschafft. ^^

    Dürft aber natürlich gern weiterdiskutieren.

  • Array / Zahlen vergleichen - Lösungsansatz

    • nuts
    • 6. Juli 2016 um 14:48

    Problem ist auf jeden Fall gelöst, danke für die vielen Hinweise und Skripte. :)

    P.S. Das Thema auf *gelöst* setzen geht nicht mehr oder?

  • Array / Zahlen vergleichen - Lösungsansatz

    • nuts
    • 5. Juli 2016 um 15:00

    Das ging ja fix, danke. :)

    Auf Geschwindigkeit kommt es zum Glück nicht wirklich an und daher sind die _Array Schweinereien wohl akzeptabel.
    Eigentlich wollt ich ohne auskommen, aber daran bin ich gescheitert. :D

    eidt\ Ah noch eine Lösung. Werds mir anschauen, danke Kanashius!

  • Array / Zahlen vergleichen - Lösungsansatz

    • nuts
    • 5. Juli 2016 um 14:27

    Hi Leute ich bräuchte man eine schlaue Idee wie ich mein folgendes Problem lösen kann (Pseudo-Code oder Hinweis reicht hoffentlich).


    Ich habe 2 1D Arrays (unterschiedlich groß) jeweils gefüllt mit verschiedenen Zahlen.
    z.B.
    Array1=[10, 20, 20, 100, 100, 100, 100]
    Array2=[20, 20, 100, 100, 50]

    Gesucht werden jetzt alle Zahlen, die in einem Array vorkommen, aber im anderen Array nicht vorhanden sind.

    Im Beispiel wäre das gewünschte Ergebnis: 10, 100, 100, 50
    Zahlen können durchaus mehrfach vorkommen und da im Beispiel die "100" viermal in Array1 und nur zweimal in Array2 vorhanden ist, gehört die "100" zweimal zum gewünschten output.

    Ich hoffe ich habs halbwegs verständlich dargestellt. Also gesucht werden alle Zahlen für die sich kein Paar im anderen Array finden lässt.
    Ich loop hier ohne Plan durch die Arrays und krieg kein vernünftiges Ergebnis raus. :S

    Danke & Gruß


    nuts

  • OnEvent in sich aufrufenden Funktionen

    • nuts
    • 15. Januar 2015 um 14:57

    Das funktioniert auch nur zufällig (einmalig).
    In der Funktion "Start" wird jedes mal eine neue while 1 ... Wend Schleife begonnen und diese wird nie verlassen.
    Fazit: Die While ... Wend Schleife muss aus der Funktion.
    Ist ähnlich wie bei "GUIRegisterMsg"

  • "Subscript used on non-accessible variable" beim AD UDF, zB: "_AD_GetObjectProperties"

    • nuts
    • 13. Januar 2015 um 21:06

    Da habe ich mich etwas ungenau ausgedrückt.
    @error Prüfung ist je nach Funktion und vor dem Array Zugriff natürlich auch eine gute (bessere) Möglichkeit.

    Ich meinte außerdem, dass nicht jeder Funktionsaufruf eine Fehlerabfrage zur Folge haben muss.

  • BeatIt - [Music Player mit Equalizer, CrossfadeEx, ...]

    • nuts
    • 13. Januar 2015 um 19:37

    Ist so ca. klar was +3db oder +6db bedeutet?

  • "Subscript used on non-accessible variable" beim AD UDF, zB: "_AD_GetObjectProperties"

    • nuts
    • 13. Januar 2015 um 19:35

    Erlaube mir da mal anderer Meinung zu sein.
    Wenn man den Fehler auch später noch abfangen kann ist das nicht immer nötig und kann je nachdem auch mal weggelassen werden.
    Das gilt natürlich nicht für Arrays.

    Diskussion hatten wir hier schon etwas: String umformen

  • "Subscript used on non-accessible variable" beim AD UDF, zB: "_AD_GetObjectProperties"

    • nuts
    • 13. Januar 2015 um 18:23

    Darum solltest du immer vor dem Zugriff auf ein Array immer prüfen ob es 1. überhaupt ein Array ist und 2. ob nicht die Größe überschritten wird.
    Außer natürlich man kann vom Skript aus ganz sicher kontrollieren, dass ein Array in entsprechender Dimensionierung immer erstellt wird.

    Ansonsten baust du dir überall potentielle crashs in die Skripte ein und die Fehler zu finden kann recht aufwendig werden.

  • BeatIt - [Music Player mit Equalizer, CrossfadeEx, ...]

    • nuts
    • 13. Januar 2015 um 17:52
    Zitat von ProgrammingDonkey

    Er verfügt über einen freien Equalizer; Der Benutzer kann jede beliebige Frequenz eingeben, und jede beliebige Stärke, um diese zu verändern.


    Das sollte so aber nicht sein.
    Kenne die dahintersteckenden Funktionen der BASS UDF jetzt nicht, aber wenn dort keine Sicherheitsmechanismen eingebaut sind, kann man sich so auch die Lautsprecher beschädigen.

    Die mir bekannten Equalizer erlauben meist nur einen Boost von +6db pro Band und vesuchen auch die Mehrfachverwendung auszuschließen (z.B. 3 Bänder @30hz +6db macht +18db @30hz und bringt mit ausreichend Verstärkerleistung den Subwoofer zum anschlagen).

  • Error Managment

    • nuts
    • 12. Januar 2015 um 18:33

    Das mit der globalen Variable in einer eigenen Error UDF gefällt mir glaube ich.
    Was haltet ihr davon:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <File.au3>

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

    #include <myError.au3>
    ;#include <Nuts_custom1.au3>
    ;#include <Nuts_custom2.au3>

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

    Global $logfile=@ScriptDir &"\test.log"
    Global $writelog=1 ;Int(Iniread("test.ini", "Settings", "writelog", 1))
    Global $i_modus=1; Int(Iniread("test.ini", "Settings", "modus", 1))

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

    ;Global $h_file=FileOpen("testfile.txt")
    Global $s_Filereadline="hallo"
    Global $s_Filereadline="192.168.1.1"
    ;FileClose($h_file)

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

    MsgBox(0, "Error", _Get_myError())
    _Errorhandling($i_modus)
    MsgBox(0, "Error", _Get_myError())
    Exit

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

    Func _Errorhandling($i_flag) ; Funktion im Hauptskript

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

    local $error

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

    switch $i_flag
    case 1
    $error=_Action_Y($s_Filereadline)
    if @error and $writelog then MsgBox(0, "Error", _Get_myError()) ;_FileWriteLog($logfile, $error) ; hier soll jetzt die Fehlermeldung aus den Funktionen landen z.B. "TCP Connect fehlgeschlagen" oder "IP nicht gefunden"
    case 2
    $error=_Action_Z($s_Filereadline)
    if @error and $writelog then MsgBox(0, "Error", _Get_myError())
    case else
    if @error and $writelog then MsgBox(0, "Error", "ungültiger Modus")
    endswitch

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

    endfunc

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

    Func _Action_Y($s_data) ; <Nuts_custom1.au3>

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

    Local $IP, $socket, $error

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

    if StringInStr($s_data, "192.168.1.1") then
    $IP=Stringleft($s_data,11)
    _Sende_TCPBefehl($IP)
    if @error then Return SetError(1, 0, 0)
    else
    _Set_myError("IP nicht gefunden")
    Return SetError(1, 0, 0)
    endif

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

    endfunc

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

    Func _Action_Z($s_data) ; <Nuts_custom1.au3>

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

    Local $IP, $socket, $error

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

    if StringInStr($s_data, "192.168.1.1") then
    $IP=Stringleft($s_data,11)
    _Sende_TCPBefehl($IP)
    if @error then Return SetError(1, 0, 0)
    else
    _Set_myError("IP nicht gefunden")
    Return SetError(1, 0, 0)
    endif

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

    endfunc

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

    Func _Sende_TCPBefehl($s_IP) ; <Nuts_custom2.au3>

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

    local $socket = TCPConnect($s_IP, 23)
    if @error then
    _Set_myError("TCP Connect fehlgeschlagen")
    Return SetError(1, 0, 0) ; diese Fehlermeldung soll jetzt in der Funktion "_Errorhandling" im Hauptskript ankommen und in ein logfile geschrieben werden
    else
    TCPSend($socket, "hallo")
    endif
    endfunc

    [/autoit]
    Spoiler anzeigen
    [autoit]


    #include-once

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

    Global $s_my_errormessage=false
    Global $a_my_errorinfos[4][2]

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

    Func _Get_myError($i_flag=1, $b_reset=1)

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

    local $return

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

    switch $i_flag
    case 1
    $return=$s_my_errormessage
    case 2
    $return=$a_my_errorinfos
    EndSwitch

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

    if $b_reset then _Clear_myError()

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

    Return $return
    endfunc

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

    Func _Set_myError($s_message, $i_flag=1, $s_includename="", $s_functionname="", $i_line=0)
    switch $i_flag
    case 1
    $s_my_errormessage=$s_message

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

    case 2
    $a_my_errorinfos[0][0]="Error Message"
    $a_my_errorinfos[0][1]=$s_message

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

    $a_my_errorinfos[1][0]="Error in include"
    $a_my_errorinfos[1][1]=$s_includename

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

    $a_my_errorinfos[2][0]="Error in Function"
    $a_my_errorinfos[2][1]=$s_functionname

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

    $a_my_errorinfos[3][0]="Error in Line"
    $a_my_errorinfos[3][1]=$i_line
    EndSwitch
    endfunc

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

    Func _Clear_myError()

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

    $s_my_errormessage=false

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

    $a_my_errorinfos[0][0]="Error Message"
    $a_my_errorinfos[0][1]=""

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

    $a_my_errorinfos[1][0]="Error in include"
    $a_my_errorinfos[1][1]=""

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

    $a_my_errorinfos[2][0]="Error in Function"
    $a_my_errorinfos[2][1]=""

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

    $a_my_errorinfos[3][0]="Error in Line"
    $a_my_errorinfos[3][1]=0

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

    endfunc

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Error Managment

    • nuts
    • 11. Januar 2015 um 19:16
    Zitat von Andy


    Wer Lesen kann, ist klar im Vorteil, ich schrieb "im FEHLERFALL".


    Hier ist eine Stimmung ... wo hast du denn beschrieben wo deine msgbox eingesetzt wird? ?(

    Zitat von Andy


    Hat den unermesslich großen Vorteil, dem ANWENDER eine Fehlermeldung in einer Msgbox präsentieren zu können:
    "Die Datei qwerty.txt kann nicht bearbeitet werden." Im unteren Teil der Msgbox steht dann:
    "Der Fehler /Die Datei qwerty.txt kann nicht geöffnet werden/ ist aufgetreten in Modul blablub.au3 in Funktion _Func_123() im Segment xxxxx. Funktionsparameter sind aaa,bbb,ccc,ddd ".


    Natürlich und das versuche ich auch so zu machen (im Hauptskript, daher der Thread ;) ), aber wenn man in den UDF's Funktionen auslagert, die universell einsetzbar sein sollen (z.B. auch für Skripte, die im Systemkonto laufen), sollte man keine msgboxen quer durch die includes verteilen!

    Zitat von Andy


    Und bzgl. MsgBox in Includes....geh mal ganz tief in dein Inneres und frag dich dann mal in welcher Form AutoIt einen FEHLER wirft!


    Eigentlich nur wenn externe Daten oder Schnittstellen verwendet werden auf die das Skript keinen Einfluss hat.

    Zusammengefasst verwendest du globale Variablen in den includes richtig? ?(

  • Error Managment

    • nuts
    • 11. Januar 2015 um 07:10

    Naja "msgbox" hat imho in "includes" nichts verloren.
    Die sind bei mir allgemein gehalten und auch ohne Benutzeraktion verwendbar.

    z.B. "<Nuts_custom2.au3>" wird in mehreren Hauptskripten verwendet (mal mit, mal ohne Benutzeraktion).
    Sonst müsste man sich den Spaß ja nicht machen und Funktionen auf includes auslagern.
    Glaube ich führe eine global "Error" Variable je "include" ein.
    Ist auch nicht schön, aber besser gehts wohl nicht.

  • Error Managment

    • nuts
    • 10. Januar 2015 um 16:24

    Hi,

    ich wollte mal grundsätzlich Fragen wie ihr das mit dem Errorhandling im Zusammenhang mit euren eigenen UDF macht.
    z.B. wenn ich mehrere UDF's verwende und viele verschachtelte Funktionen benutzte wird es etwas unübersichtlich die eigentliche Error-Nachricht bis ins Hauptskript zu transportieren.
    Ich mache das derzeit ca. so:
    Hauptscript:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <File.au3>

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

    #include <Nuts_custom1.au3>

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

    Global $logfile=@ScriptDir &"\test.log"
    Global $writelog=Int(Iniread("test.ini", "Settings", "writelog", 1))
    Global $i_modus=Int(Iniread("test.ini", "Settings", "modus", 1))

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

    Global $h_file=FileOpen("testfile.txt")
    Global $s_Filereadline=FileReadLine($h_file, 1)
    FileClose($h_file)

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

    _Errorhandling($i_modus)

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

    Exit

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

    Func _Errorhandling($i_flag) ; Funktion im Hauptskript

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

    local $error

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

    switch $i_flag
    case 1
    $error=_Action_Y($s_Filereadline)
    if @error and $writelog then _FileWriteLog($logfile, $error) ; hier soll jetzt die Fehlermeldung aus den Funktionen landen z.B. "TCP Connect fehlgeschlagen" oder "IP nicht gefunden"
    case 2
    $error=_Action_Z($s_Filereadline)
    if @error and $writelog then _FileWriteLog($logfile, $error)
    case else
    if $writelog then _FileWriteLog($logfile, "ungültiger Modus")
    endswitch

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

    endfunc

    [/autoit]

    includes:

    Spoiler anzeigen
    [autoit]


    #include <Nuts_custom2.au3>

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

    Func _Action_Y($s_data) ; <Nuts_custom1.au3>

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

    Local $IP, $socket, $error

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

    if StringInStr($s_data, "192.168.1.1") then
    $IP=Stringright($s_data, 11)
    $error=_Sende_TCPBefehl($IP)
    if @error then Return SetError(1, 0, $error)
    else
    Return SetError(1, 0, "IP nicht gefunden")
    endif

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

    endfunc

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

    Func _Action_Z($s_data) ; <Nuts_custom1.au3>

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

    Local $IP, $socket, $error

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

    if StringInStr($s_data, "192.168.1.1") then
    $IP=Stringleft($s_data,11)
    $error=_Sende_TCPBefehl($IP)
    if @error then Return SetError(1, 0, $error)
    else
    Return SetError(1, 0, "IP nicht gefunden")
    endif

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

    endfunc

    [/autoit]
    Spoiler anzeigen
    [autoit]


    Func _Sende_TCPBefehl($s_IP) ; <Nuts_custom2.au3>

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

    local $socket = TCPConnect($s_IP, 23)
    if @error then
    Return SetError(1, 0, "TCP Connect fehlgeschlagen") ; diese Fehlermeldung soll jetzt in der Funktion "_Errorhandling" im Hauptskript ankommen und in ein logfile geschrieben werden
    else
    TCPSend($socket, "hallo")
    endif
    endfunc

    [/autoit]

    D.h. ich schleppe die Fehlermeldung, die später im Log des Hauptskripts landen soll, von der tiefsten Ebene (hier _Sende_TCPBefehl($s_IP) bis hin zur höchsten Ebene (Hauptskript).
    Bei diesem Beispiel ist das noch gut zu machen, aber bei größeren Skripten muss man höllisch (in jeder Funktion) aufpassen die Fehlermeldung der tieferen Ebene nicht zu verlieren.
    Und wenn das passiert ist geht die Fehlersuche los, wo die Nachricht verloren gegangen ist. :(

    Das Logfile von der obersten Ebene (Hauptskript) an die includes zu übergeben ist auch keine Lösung.
    Vielleicht habt ihr eine einfachere und bessere Lösung?

    Ich würde gerne die Fehlermeldung von jeder Ebene direkt ins Hauptskript bringen und innerhalb der UDF's nur @error Codes verwenden.
    Vergleichbar mit dem Errorhandler für COM

    [autoit]

    ObjEvent("AutoIt.Error", "_ErrFunc")

    [/autoit]

    Würde mich über Vorschläge freuen. :thumbup:

    Gruß nuts

  • String umformen

    • nuts
    • 9. Januar 2015 um 23:15

    Den Eingabestring kann ich nicht kontrollieren.

    Mit Array

    [autoit]

    $a_between=_Stringbetween( )
    if not @error then $s_ergebnis= $a_between[0]
    if $s_ergebnis=sinnvoll then mache dies und das

    [/autoit]

    Ohne Array

    [autoit]

    S_ergebnis=StringRegExpReplace($s_xmlline, "(?im).*>(.+)<\/.*", "$1")
    if $s_ergebnis=sinnvoll then mache dies und das

    [/autoit]

    In dem Fall lass ich das Ergebnis sogar erstmal auf eine andere Funktion los und mache dahinter das Errorhandling, da der Fehlerfall (hoffentlich) sehr selten ist.
    Ich möchte trotzdem nicht auf ein Array zugreifen ohne Prüfung und mir die gern für 99,9% der Fälle sparen (=> kein Array :D ).
    Mag kein guter Stil sein, aber für mich okay ...

    UEZ: Danke! Das funktioniert. :)
    BugFix : Wie suche ich denn nach sowas im Forum? :(

  • String umformen

    • nuts
    • 9. Januar 2015 um 22:29

    Hm das könnte man jetzt noch optimieren um das Pattern nicht für jede Zeile anpassen zu müssen.
    Dazu müsste ich alles zwischen ">" und "</" kriegen.
    Nur ich kriegs nicht hin. 8o

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™