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

Beiträge von Runa

  • CSV-Datei (Trennzeichen Semikolon) enthält in den Feldern auch Semikolons

    • Runa
    • 28. Oktober 2016 um 08:04

    Nicht optimiert, grundsätzlich aber funktionabel... falls die Routinen im CSV-Editor den @autoBert genannt hat das nicht können... :) Brauchte sowas in der Art mal bei einem anderen Projekt... vielleicht hilft es dir ja :)

    Der Funktion wirfst du die einzelnen Zeilen der Datei hin und bekommst damit dann die einzelnen CSV-Felder in einem 1-basierten Array zurück.

    AutoIt
    $sTEST = '"AHI_";;;;"Apnoe-Hypopnoe-Index";;;;;;;;;"";"Apnoe-Hypopnoe-Index $m1\c:FF\____$m0\c:-\/Stunde [normal: >5; Störungen: „mild“: AHI 5-15,\r„moderat“: AHI 15-30, schwer“: AHI > 30/Stunde nach der Amerikanischen Gesellschaft für Schlafmedizin (AASM)].$m0";"";"";"";"";"";"GKIRSCH";FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;"";FALSE;""'
    
    
    $aTest = _ProcessLine($sTEST)
    
    
    Func _ProcessLine($sLine)
    	Local $fInString = False
    	Local $sElement = ""
    	Local $aOutput[1] = [0]
    
    
    	For $i = 1 To StringLen($sLine)
    		$sTarget = StringLeft(StringTrimLeft($sLine, $i-1), 1)
    
    
    		If $sTarget = '"' And $fInString = False Then
    			$fInString = True
    			$sElement &= $sTarget
    			ContinueLoop
    		EndIf
    
    
    		If $sTarget = '"' And $fInString = True Then
    			$fInString = False
    			$sElement &= $sTarget
    			ContinueLoop
    		EndIf
    
    
    		If $sTarget = ';' And $fInString = False Then
    			ReDim $aOutput[UBound($aOutput)+1]
    			$aOutput[UBound($aOutput)-1] = $sElement
    			$sElement = ""
    			ContinueLoop
    		EndIf
    
    
    		If $sTarget = ';' And $fInString = True Then
    			$sElement &= $sTarget
    			ContinueLoop
    		EndIf
    
    
    		$sElement &= $sTarget
    	Next
    
    
    	$aOutput[0] = UBound($aOutput) - 1
    	Return $aOutput
    EndFunc
    Alles anzeigen
  • Ping Tool

    • Runa
    • 27. Oktober 2016 um 14:44

    Kleiner Hinweis meinerseits zum Startscript - dein neustes habe ich noch nicht angeguckt:

    "$long_inp_IP_Adresse" bis "EndIf" sollten außerhalb deines Switches sein. Ein Switch ist praktisch eine Mehrfach-If-Abfrage. Du kontrollierst, ob ein Wert X (in deinem Fall $nMsg) einem anderen Wert entspricht. Bei dem genannten Part brauchst du eine solche Prüfung aber gar nicht, denn die Prüfung $nMsg = $nMsg ergibt immer wahr!

    Anbei die modifizierte Version, falls du das noch gebrauchen kannst:

    AutoIt
    While 1
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case $GUI_EVENT_CLOSE, $exit_button
    			Exit
    		Case $start_button
    			pingabfrage()
    		case $clear_button
    			GUICtrlSetData($inp_IP_Adresse, "192.168.0.")
    	EndSwitch
    	$long_inp_IP_Adresse = (StringLen(GuiCtrlRead($inp_IP_Adresse)))
    	If $long_inp_IP_Adresse > 10 Then
    		GUICtrlSetState($checkbox1, $GUI_HIDE)
    		GUICtrlSetState($lab_control_checkbox1, $GUI_HIDE)
    	Else
    		GUICtrlSetState($checkbox1, $GUI_SHOW)
    		GUICtrlSetState($lab_control_checkbox1, $GUI_SHOW)
    		checkbox_on_off()
    	EndIf
    WEnd
    Alles anzeigen
  • Anfänger braucht Hilfe beim einlesen von Dateien

    • Runa
    • 26. Oktober 2016 um 11:40
    Zitat von Blue-Twoo

    So wie ich das verstanden habe startet er die Funktion HDDAvailable und übergibt die Daten der Datei in der gesucht werden soll mit dem Suchtext.

    Fast richtig: Er ruft die Funktion ConsoleWrite auf, die etwas unten in die Console von ScITE schreibt. Dieser Funktion übergibt er den Rückgabewert der Funktion HDDAvailable mit den von dir beschriebenen Übergabeparametern, an den noch das Makro "@CRLF" angehängt wird. Das bedeutet - deine nächste Frage fragt ja exakt dies:

    Zitat von Blue-Twoo

    Was aber bedeutet das & @CRLF) hinten dran?

    Das Makro "@CRLF" gibt die Steuerzeichen CR (Carriage Return) und LF (Line Feed) zurück, die für einen Zeilenumbruch sorgen.

    Zitat von Blue-Twoo

    Wie muss ich diese Funktion nutzen damit ich auch nach Bezeichnungen suchen kann die Leerzeichen enthalten wie z.b Partition 1?

    Du könntest die Funktion folgendermaßen umformulieren (siehe Schritt 2.1 und Zeilen 80-82):

    AutoIt
    #include <File.au3>
    ;- -- --- Nur zum Testen --- -- -
    Local $sTestData = 	"\\.\PHYSICALDRIVE0 Samsung SSD 830 EVO 250GB" & @CRLF & _
    					"\\.\PHYSICALDRIVE2 Samsung SSD 840 PRO Series" & @CRLF & _
    					"\\.\PHYSICALDRIVE1 Samsung SSD 830 EVO 500GB" & @CRLF & _
    					"\\.\PARTITION 1 Samsung SSD 830 EVO 100GB" & @CRLF & _
    					"\\.\PHYSICALDRIVE3 Multi Flash Reader USB Device"
    $sTempFile = "temp_hdd_file.txt"
    FileDelete($sTempFile)
    FileWrite($sTempFile, $sTestData)
    
    
    ;- -- --- Eigentliches Skript --- -- -
    ;Schritt 1: Einlesen der Daten.
    ; Dies muss für alle folgenden
    ; Abfragen nur einmal erledigt
    ; werden, daher lagern wir es
    ; aus der Funktion aus, damit
    ; es wirklich nur einmal
    ; erledigt wird.
    
    
    $sHDDFileData = FileRead($sTempFile)
    ConsoleWrite(HDDAvailable($sHDDFileData, "\\.\PARTITION 1") & @CRLF)
    Func HDDAvailable($sHDDFileData, $sHDDIdentifier)
    
    
    	;$sHDDFileData: Inhalt der HDD-Datei
    	;$sHDDIdentifier: Id der zu überprüfenden HDD
    	;Wir geben False (0) zurück, wenn die Festplatte nicht gefunden wurde
    	;Wir geben die Bezeichnung zurück, wenn die Festplatte gefunden wurde
    
    
    	;Schritt 2: Suchen der HDD
    	; Um die für uns interessante
    	; Zeile in der Datei zu finden,
    	; benutzen wir StringInStr.
    	; Diese Funktion gibt die Position
    	; eines Textes in einem anderen zurück.
    	; Die Rückgabe ist 0, wenn der Suchtext
    	; nicht gefunden wurde.
    
    
    	$iSearchPos = StringInStr($sHDDFileData, $sHDDIdentifier)
    	If $iSearchPos = 0 Then ;wenn $iSearchPos 0 ist
    		Return False ;Ende! Festplatte wurde nicht gefunden
    	EndIf
    
    
    	; Schritt 2.1: Vorbereiten des 3. Schrittes
    	; Wir müssen - damit auch Bezeichnungen mit Leerzeichen
    	; verwendet werden können auslesen, wie viele Leerzeichen
    	; die Bezeichnung enthält.
    	; Hierzu verwende ich die Funktion StringReplace, da diese
    	; über das @extended-Makro die Anzahl der Ersetzungen
    	; zurückgibt - kann man also zum Zählen missbrauchen!
    	; Zu diesem Wert rechnen wir dann noch eine 1, damit
    	; wir genau wissen, den wie vielten Wert wir brauchen.
    
    
    	StringReplace($sHDDIdentifier, " ", " ")
    	$iOcc = @extended + 1
    
    
    	;Schritt 3: Bezeichnung auslesen
    	; Wir wissen, an welcher Stelle in der Datei
    	; die Festplattenbezeichnung steht, nämlich
    	; direkt nach dem Identifier und vor dem nächsten
    	; Zeilenumbruch. Dieses Wissen machen wir uns zu Nutze.
    
    
    	$sDesc = StringTrimLeft($sHDDFileData, $iSearchPos)
    
    
    	; Nun haben wir alles, was nach dem Identifier kommt,
    	; bis zum Ende der Datei. Wollen wir aber nicht.
    	; Wir brauchen nur alles bis zum nächsten
    	; Zeilenumbruch. Dazu nutzen wir StringInStr..
    
    
    	$iNextCRLFPos = StringInStr($sDesc, @CRLF)
    
    
    	; ... und schneiden alles rechts davon ab.
    
    
    	$sDesc = StringLeft($sDesc, $iNextCRLFPos-2) 
    
    
    	; Fast richtig. Jetzt muss nur noch der
    	; Identifier entfernt werden. Der gehört ja nicht
    	; zur Bezeichnung.
    	; Wir verwenden hierbei die Variable
    	; iOcc die wir in Schritt 2.1 definiert haben. Mit
    	; dieser Variable bestimmen wir, den wie vielten
    	; Treffer wir gerne haben würden
    
    
    
    
    	$iNextSpacePos = StringInStr($sDesc, " ", 0, $iOcc)
    	$sDesc = StringTrimLeft($sDesc, $iNextSpacePos)
    
    
    	; Und fertig. Übrig bleibt unsere Beschreibung.
    
    
    	Return $sDesc
    EndFunc
    Alles anzeigen
  • AutoIt-Script verhindert Abmeldung von TerminalServer

    • Runa
    • 20. Oktober 2016 um 11:32

    Werde ich mal testen. Danke für die Hinweise.

  • StringRegExp = Findet jedes einzelne Zeichen (AUCH Zeilenumbrüche).

    • Runa
    • 20. Oktober 2016 um 11:25

    Hallo Mücke,

    ohne den anderen Treffer zu kennen (umliegender Quellcode..) kann ich leider keine Fehleranalyse betreiben. Es muss jedenfalls "EAN" davor stehen (in welchem Kontext auch immer - auch möglich als Teil eines Wortes) - dann bringt er dir auch die Zahl.

    Kurz und knapp fix:

    (?s)>EAN<.+?(\d+)

    Ich habe einfach noch Tag-Open und Tag-Close hinzugefügt. Damit ist klar, dass zwischen den Strongs wirklich NUR (!) EAN stehen darf. Die Lösung oben würde dir beispielsweise auch eine Nummer nach "european academy of neurology" liefern... warum ist gehighlighted. Das passiert nun nicht mehr.

  • AutoIt-Script verhindert Abmeldung von TerminalServer

    • Runa
    • 20. Oktober 2016 um 10:54
    Code
    Opt('WinTitleMatchMode', 2 )
    $iTime = 250
    $sTitle = "Chat"
    
    
    While Sleep($iTime)
    	$aWindows = WinList($sTitle)
    	If $aWindows[0][0] > 0 Then
    		For $i = 1 To $aWindows[0][0]
    
    
    			$sTitle_Sub = $aWindows[$i][0]
    			$hWnd_Sub = $aWindows[$i][1]
    
    
    			If  _Flash($sTitle_Sub, $hWnd_Sub) <> 0 Then
    				WinSetState($hWnd_Sub, "", @SW_RESTORE)
    				WinSetOnTop ($hWnd_Sub, "", 1)
    				$sWindow = WinGetTitle("[active]")
    			ElseIf WinGetTitle("[active]")  = $sTitle Then
    				WinSetOnTop ($hWnd_Sub, "", 0)
    				Do
    					Sleep(100)
    				Until WinGetTitle("[active]") <> $sTitle
    				WinSetState($hWnd_Sub, "", @SW_MINIMIZE)
    			EndIf
    
    
    		Next
    
    
    	EndIf
    WEnd
    
    
    Func _Flash($sTitle, $hWnd)
        If WinActive($sTitle) Then Return 0
        $tFLASHWINFO = DllStructCreate("uint;hwnd;dword;uint;dword")
        DllStructSetData($tFLASHWINFO, 1, 20)
        DllStructSetData($tFLASHWINFO, 2, $hWnd)
        $a = DllCall("user32.dll", "int", "FlashWindowEx", "ptr", DllStructGetPtr($tFLASHWINFO))
        Return $a[0]
    EndFunc
    Alles anzeigen

    Das ist der Quellcode - eigentlich nix "besonderes" drin... :(

  • AutoIt-Script verhindert Abmeldung von TerminalServer

    • Runa
    • 20. Oktober 2016 um 10:15

    Hallo misterspeed,

    danke erst einmal für deine Antwort. :)

    HDD und RAM sind beide schon geprüft - sowohl auf Fehler als auch, ob der Treiber installiert ist. Chipsatztreiber scheint auch aktuell zu sein. Virenscanner habe ich gerade testweise mal komplett deaktiviert, leider aber ohne, dass der Fehler dann ausgeblieben wäre. Datenausführungsverhinderung habe ich bisher noch nie gehört - was ist das, und wie kann ich da eine Ausnahme machen?

    Nochmal kurz und pregnant zusammengefasst:

    1. Es tritt auf mehreren Servern aus - alles Terminalserver.
    2. Es tritt nur beim Abmelden / Herunterfahren des Gerätes auf
    3. Es ist NUR dieses AutoIt-Script
    4. Treiber für HDD, RAM und Chipsatz passen und sind aktuell
    5. HDD und RAM weisen keine Fehler auf

  • StringRegExp = Findet jedes einzelne Zeichen (AUCH Zeilenumbrüche).

    • Runa
    • 20. Oktober 2016 um 09:56

    (?s)EAN.+?(\d+)

    Der funktioniert.

    (?s) matched bei . auch New-Line-Zeichen mit (CR, LF)
    Dann musst du aber auch die NewLines immer mitnehmen.

    Der RegEx spuckt dir die erste Zahl nach "EAN" aus. Kannst noch verfeinern, wenn du willst, brauchst du aber nicht zwangsläufig... ;)

  • AutoIt-Script verhindert Abmeldung von TerminalServer

    • Runa
    • 20. Oktober 2016 um 09:49

    Hallo AutoIt-Gemeinde,

    ich habe gerade mal wieder ein Problem und muss euch doch noch mal auf den Keks gehen.

    Ich bekomme beim Abmelden von einem Terminalserver eine Fehlermeldung, die ich nicht verstehe. Auch in Google finde ich nichts - weder zu dem Fehler selbst, noch zu den angegebenen Codes innerhalb der Nachrichtenbox. Die Fehlermeldung anbei:

    [Blockierte Grafik: http://img5.fotos-hochladen.net/uploads/fehlermeldungd2swenjvmh.png]

    Jemand nen Plan, was ich versuchen könnte? Ich stehe hier gerade einfach auf dem Schlauch ...


    Liebe Grüße

    Sophie

  • Aus gegebenen Anlass...

    • Runa
    • 15. April 2016 um 01:08

    Hallo zusammen,

    ich möchte mich für mein damals kindisches Verhalten entschuldigen, und dafür, dass ich mich in diesem Forum bloß noch über mein Fachwissen definiert habe. Die Gründe dafür sind privater Natur und kennen nur sehr wenige Nutzer dieses Forums. Es war mir schlicht aufgrund fehlender Rückmeldungen nicht bewusst, dass ich für einige Nutzer dieses Forums derart nervtötend bin.

    Zur Wiederherstellung der Ruhe in diesem Forum werde ich mich daher dauerhaft aus dem aktiven Geschehen des Forums zurückziehen. Komplett ohne Wiederkehr. Dies wird mein letzter Beitrag in diesem Forum sein, sofern Antworten hier in diesem einen Thread nicht meine Antwort erfordern.


    Ich wünsche der AutoIt-Gemeinde hiermit noch alles Gute

  • Externe Programmparameter auslesen

    • Runa
    • 11. April 2016 um 20:22

    Chrome Addons sind aus meiner Sicht unsafe. Sind schnell deaktiviert und sehr auffällig. Ich habe mir um das zu lösen damals in der Schule für XP nen Script gebaut was schnell die Hosts Datei austauscht. Ging dort aber um eine andere Seite.

  • Zufälliger Befehl

    • Runa
    • 9. April 2016 um 21:51

    Mir erscheint es zweifelhaft aus dem Grund dass man für ne VPN Verbindung ein klares Ziel hat. Genau wie beim Webseiten Besuch. Mir entzieht sich der Sinn der Zufälligkeit. Also aus meiner Sicht bis auf weiteres Verdacht auf einen Bot der in den AGB verboten ist.

  • Unterschiedliche Antwortzeiten der Anwendung dadurch sporadische Ausführung

    • Runa
    • 9. April 2016 um 14:29

    Dein Problem ist vermutlich, dass dein Script zu schnell ist. Oder anders formuliert: Du solltest vor deiner Zeile 3 warten, bis das Fenster erstmalig erscheint. Beispielsweise mit WinWaitActive oder WinWait. Dann sollte dein Code zuverlässig abwarten, bis das Fenster "Datenabgleich" wieder geschlossen ist.

    Zu deiner Zeile 13 lässt sich nichts sagen, außer dass du da halt mal eben gar nicht wartest, was eine Antwort durch das Programm recht schwierig macht.

  • An die Mathematiker

    • Runa
    • 9. April 2016 um 13:13

    Nette Idee autoBert - auf die kam ich noch gar nicht :)

    Lesbarer ist es definitiv für ungeübtere ... danke für die Idee :)

  • An die Mathematiker

    • Runa
    • 9. April 2016 um 12:11

    autoBert:

    Deine Lösung kommt nicht nachweislich zum selben Ergebnis.

    Deine zweite Spalte weicht durchweg vom Soll ab:

    Code
    1 | 2 | 2
    2 | 3 | 2
    3 | 4 | 2
    4 | 1 | 2
    5 | 2 | 3
    6 | 3 | 3
    7 | 4 | 3
    8 | 1 | 3
    9 | 2 | 4

    Soll - vgl. Eingangspost:

    Code
    1 | 1 | 2
    2 | 2 | 2
    3 | 3 | 2
    4 | 4 | 2
    5 | 1 | 3
    6 | 2 | 3
    7 | 3 | 3
    8 | 4 | 3
    9 | 1 | 4

    Ansonsten wäre mir deine Lösung auch lieber gewesen. ;)

  • An die Mathematiker

    • Runa
    • 8. April 2016 um 20:11

    Ich gebe zu: Ich habe nicht alle seine Threads und Posts vollständig durchgelesen. Dass er diesen Operator bereits erklärt bekommen hat und wieder vergessen hat, war mir somit nicht bewusst.

    Der Rest deines Beitrags sind erbärmliche Beleidigungen, denen ich keine weitere Beachtung schenke. Weder bin ich in der Botter-Community - mal abgesehen davon, dass weder ich noch sie selbst mich in ihrem Forum wollen - noch wirklich in der "Ballerspiele"-Community; an dieser Stelle ignorieren wir mal vollkommen, dass deine Ansichten hierzu wieder weitere Beleidigungen sind.

    Kleine Randbemerkung, wie ich hier her kam, damit auch du es kapierst: Einmal aus besagter Botter-Community, wo ich seit über 3 Jahren nicht einmal mehr einen Account habe, wobei ich hierbei den Account durch einen Admin löschen lies. Danach war ich ausschließlich im Entwicklerforum unterwegs, wo ich es immer noch bin.

    Abschließend: Kein Parser der Welt löst eine Abfrage mit 9 Rechenoperationen und eine Abfrage mit 6 Rechenoperationen zu dem gleichen Code auf - das ist absoluter Unfug.

  • Excel UDF Schreibe in Zelle wenn leer

    • Runa
    • 7. April 2016 um 14:04
    AutoIt
    #include <Excel.au3>
    $pfad = @scriptdir&"\test.xlsx"
    $tabelle = "Tabelle1"
    $i = 1
    $Ziel = "B" & $i
    $wert = "12345"
    
    
    $oExcel=_Excel_Open(true)
    $oWorkbook=_Excel_BookOpen($oExcel,$pfad)
    
    
    While _Excel_RangeRead($oWorkbook,$tabelle, $ziel) <> ""
    	$Ziel = "B" & $i
    	$i += 1
    WEnd
    
    
    _Excel_RangeWrite($oWorkbook,$tabelle, $wert,$Ziel)
    ;_Excel_BookClose($oWorkbook)
    ;_Excel_Close($oExcel)
    Alles anzeigen

    Einfach prüfen was in der Zelle ist. Ist sie leer, dann reinschreiben, ansonsten nächstes Feld

  • An die Mathematiker

    • Runa
    • 6. April 2016 um 09:41
    Zitat von Andy

    @Xorinator, das war ja wohl ein klassisches Eigentor....Viel schlimmer kann man es nicht machen :thumbdown:


    Ich lass dir mal deine Ansicht - auch wenn dir sehr viele Entwickler widersprechen würden.

    Der TE fragt nach einer MATHEMATISCHEN Lösung, bekommst stattdessen einige kryptische Zeilen hingeworfen, um auf Nachfrage innerhalb einer halben Seite Text die Erklärung einer simplen IF-Abfrage (etwas anderes ist das "Fragezeichen" nämlich nicht) erklärt zu bekommen. Thema verfehlt, 6, setzen....


    Eigentlich fragt der TE nach einem Denkanstoß, wie man eine solche Anforderung am besten Umsetzen kann. "Mathemat" kommt nur im Titel des Threads drin vor - sonst nirgends bis zu deinem Beitrag. Eine mathematische Lösung war an keiner Stelle gefordert. Und in jedem Forum in dem ich unterwegs bin, geht man bei der Anforderung eines Denkanstoßes nicht davon aus, dass dieser groß erklärt werden muss, weil es sich in der Regel um Personen handelt, die alle verwendeten Funktionen verstehen, aber gerade zu tief im Problem stecken, um auf die simpelsten Ansätze zu kommen.


    Des Weiteren ist der konditionelle Operator (Bei MS oft "bedingter Operator") KEINE einfache If-Abfrage. In einer If-Abfrage wäre der Code für das gleiche Ergebnis erheblich länger, da du zusätzlich noch eine Variable bestimmen musst, die du dann in die bestehende Zeile erst einmal einbauen müsstest.

    Und jetzt verstehst du hoffentlich, wieso ich dieses "Gedöns" zumindest bei Anfängern ablehne! Der Lerneffekt ist nämlich gleich null, gerade im Gegenteil, beim nächsten Problem in 6 Wochen ist entweder alles vergessen. mal abgesehen davon, dass der "mathematische" Ansatz wesentlich einfacher ist und ohne Vergleich auskommt.


    Im Gegensatz zu dir unterstelle ich nicht einem unbekannten Nutzer, der seit 8 Jahren (!) hier im Forum unterwegs ist, er wäre ein Anfänger. Es bedarf keiner vielen Beiträge um einer Sprache mächtig zu sein. Er ist sogar bereits länger hier im Forum als du. Ist jeder für dich ein Anfänger, bloß weil er eine Frage stellt, bei der du sofort die Lösung weißt? Für mich definitiv nicht.

    Denn wie man die "mathematische" Lösung entwickelt, ist eingängig! Listen and learn:

    (...)

    Code
    For $i = 1 To 15
        ConsoleWrite($i & "    " & Mod($i, 4) + 4 * (Mod($i, 4) = 0) & @CRLF)
    Next


    Deine Aussage ist, dass es besser und verständlicher wäre, wenn man mehr Rechenoperationen verwendet und dazu noch eine Typumwandlung von einem Boolean-Wert auf einen Integer? Deine "mathematische" Lösung ist ebenso mathematisch wie die meinige. Nur das sie der Anzahl der Rechenoperationen geschuldet langsamer ist. Sie ist sogar ebenso eingängig: Ob du nun einen konditionellen Operator verwendest (den man eventuell erklären muss, je nach Kenntnisstand des Nutzers) oder einen forcierten Boolean, der schließlich einer Typänderung unterzogen wird, um mit ihm rechnen zu können (was man eventuell erklären muss, je nach Kenntnisstand des Nutzers) bleibt sich für den Erklärungsbedarf gleich - denn es gibt Nutzer den musst du es explizit erklären, andere wissen sofort, wie(so) der Ansatz funktioniert.


    Ist es ein Nutzer, der dafür eine Erklärung braucht - wie in diesem Fall - dann ist es sinnvoll der Vollständigkeit halber gleich den kompletten Ansatz zu erklären, da es Nutzer gibt, die bloß über die Google-Suche auf ein solches Thema stoßen - je nachdem, welche Einstellungen im Bereich SEO der Webseite gemacht wurden. Alles in allem finde ich sowohl deine Haltung gegen vermeintlichen "Anfängern" extrem herablassend sowie deinen Hetzbeitrag a lá "Die Hilfestellung ist scheiße, der Anfänger merkt sich das eh nicht, und so ist besser..." mehr als deplatziert.

    Alles anzeigen
    Zitat von Xorianator

    Von der Warte der Erklärung her hast du absolut Recht, ich bin allerdings nach wie vor überzeugt davon, dass man das als Nicht-Anfänger sehr sinnvoll verwenden kann

    Ich wiederhole an dieser Stelle:
    Eines der älteren Mitglieder (Mitglied seit: Mai 2008) dieses Forums als Anfänger zu betiteln, oder ihm dies zu unterstellen ist wohl das "Eigentor" von dem Andy schreibt... ich tue dies nicht. Wie an anderer Stelle bereits erwähnt betrachte ich kurz das Profil des Nutzers, auf dessen Thread ich antworte. Eine Sache, die zu weniger herablassendem Verhalten gegenüber Altmitgliedern führt.

  • An die Mathematiker

    • Runa
    • 4. April 2016 um 15:43

    Nehmen wir es auseinander:

    Teil 1:
    $x dürfte klar sein: Zählt einfach nur nach 120 hoch von 1 aus.

    Teil 2:
    ((Mod($x, 4) = 0) ? 4 : Mod($x, 4)) - das ist ein konditioneller Operator. In den Klammern wird - abhängig von einer Bedingung - ein Wert eingesetzt.

    Bedingung: Mod($x, 4) = 0

    Falls ja: Gib 4 aus
    Falls nein: Gib Mod($x, 4) aus

    Hintergrund des Ganzen: Die Zahlenreihe gibt uns als Modular für jede Zahl genau vier Werte: 1, 2, 3 und 0. Du wolltest allerdings 1, 2, 3 und 4. Demnach muss die 0 durch eine 4 ersetzt werden. Genau das macht dieser konditionelle Operator. Kennst du vielleicht aus Excel, Access oder dergleichen. =WENN(Bedingung;Dann;Sonst) - das ist das gleiche Prinzip.

    Teil3:
    Ceiling($x / 4)+1 - Wir teilen X durch 4, runden das auf, und rechnen eins drauf.

    Hintergrund: Wir möchten nur alle 4 Schritte um eines hoch zählen. Bedeutet, jeder Schritt muss um 0,25 erhöhen, während der Wert stabil bleibt. Dazu lassen wir immer aufrunden.

    Dadurch ergibt sich für die ersten vier Schritte (0.25, 0.50, 0.75 und 1.00) immer 1. Da du dort mit einer zwei beginnen wolltest, wird noch einmal eins draufgerechnet.


    Ich hoffe, meine Erklärungen sind verständlich, ansonsten nochmal nachfragen :)

  • An die Mathematiker

    • Runa
    • 4. April 2016 um 14:03

    Passiert uns allen mal: Ich selbst habe gerade wieder Mal meine Migräne und code dafür deutlich schneller ohne das die Qualität merklich leidet. Hat auch was.

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™