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

Beiträge von Moombas

  • Aus Dateiname Ordner erstellen

    • Moombas
    • 1. Dezember 2023 um 11:14

    Hab es mal angepasst ;)

    Bleibt noch die Möglichkeit, wenn Punkte im Dateinamen verwendet wurden (z.B. test.txt.old) :P

    Das habe ich dann hier mal mit berücksichtigt:

    AutoIt
    Opt('MustDeclareVars', 1)
    
    #include <MsgBoxConstants.au3>
    
    CreateStructure()
    
    Func CreateStructure()
    Local $sFileName = "", $iResult = 0, $target
    Local Const $hSearch = FileFindFirstFile("*.*")
    	If $hSearch = -1 Then
    		MsgBox($MB_SYSTEMMODAL, "", "Error: No files/directories matched the search pattern.")
            Return False
    	EndIf
    
    	While 1
            $sFileName = FileFindNextFile($hSearch)
    		If @error Then ExitLoop
    
    		If ($sFileName <> @ScriptName) then
    			$target = @ScriptDir & '\' & StringLeft($sFileName, StringinStr($sFileName, '.', Default, -1) - 1) & '\'
    			If not FileExists($target) then DirCreate($target)
    			FileMove(@ScriptDir & '\' & $sFileName, $target & $sFileName)
    		EndIf
    	WEnd
    	FileClose($hSearch)
    EndFunc
    Alles anzeigen

    Edit: Corrected the slashes into correct direction.

  • Aus Dateiname Ordner erstellen

    • Moombas
    • 1. Dezember 2023 um 11:10

    Wie gesagt QuD ;)

  • Aus Dateiname Ordner erstellen

    • Moombas
    • 1. Dezember 2023 um 10:52

    So habe ich es verstanden, daher hier eine quick and dirty Lösung:

    AutoIt
    Opt('MustDeclareVars', 1)
    
    #include <MsgBoxConstants.au3>
    
    CreateStructure()
    
    Func CreateStructure()
    Local $sFileName = "", $iResult = 0, $target
    Local Const $hSearch = FileFindFirstFile("*.*")
    	If $hSearch = -1 Then
    		MsgBox($MB_SYSTEMMODAL, "", "Error: No files/directories matched the search pattern.")
            Return False
    	EndIf
    
    	While 1
            $sFileName = FileFindNextFile($hSearch)
    		If @error Then ExitLoop
    
    		If ($sFileName <> @ScriptName) then
    			$target = @ScriptDir & '/' & StringLeft($sFileName, StringinStr($sFileName, '.') - 1) & '/'
    			If not FileExists($target) then DirCreate($target)
    			FileMove(@ScriptDir & '/' & $sFileName, $target & $sFileName)
    		EndIf
    	WEnd
    	FileClose($hSearch)
    EndFunc
    Alles anzeigen

    Edit: Jetzt mit flexibler Dateiendung und nicht mehr ganz so QuD ;)

  • Aus Dateiname Ordner erstellen

    • Moombas
    • 1. Dezember 2023 um 09:45

    Also 1 Ordner je Datei, wobei der Ordnername dem Dateinamen entspricht (ohne Endung). Richtig?


    (Nein, ich werde den Sinn dahinter jetzt erst mal nicht hinterfragen)

  • Daten zwischen 2 Zeichen auslesen - Denkanstoss

    • Moombas
    • 27. November 2023 um 07:56

    Bin ich jetzt deppert? Genau das macht mein Vorchlag doch schon -.-

    Allerdings habe ich beachtet das in der ersten Zeile das falsch herum steht, wie du es angegeben hast (<Value1 Key1>) und nicht was man erwarten würde (<Key1 Value>) und natürlich das mit dem Filereadtoarray noch nicht eingebaut. Unten mal der angepasste code

    AutoIt
    Opt('MustDeclareVars', 1)
    
    #include <array.au3>
    #include <StringConstants.au3>
    
    GLobal Const $aSource = FilereadtoArray('DeineDatei.txt')
    Global $Source, $FinalArray
    
    For $Row = 1 to $aSource[1]
        $Source &= $aSource[$Row]
    Next
    
    $FinalArray = ValueStringsToArray($Source)
    _ArrayDisplay($FinalArray)
    
    Func ValueStringsToArray($String)
    Local Const $regex = '\<(.*?)\>'
    Local $result = StringRegExp($String, $regex, $STR_REGEXPARRAYGLOBALMATCH)
        _ArrayColInsert($result, 1)
    
        For $Row = 0 to Ubound($result, $UBOUND_ROWS) - 1
            $result[$Row][0] = StringSplit($result[$Row][0], ' ')[1] ;Nachtrag: Sollte doch erst Key und dann Value stehen!
            $result[$Row][1] = StringSplit($result[$Row][0], ' ')[2]
        Next
        Return $result
    EndFunc
    Alles anzeigen
  • Daten zwischen 2 Zeichen auslesen - Denkanstoss

    • Moombas
    • 24. November 2023 um 14:16

    Naja die Schleife zum aufsplitten fehlt noch, also im Prinzip wie mein Vorschlag mit Regex, nicht kürzer und nicht länger

  • Daten zwischen 2 Zeichen auslesen - Denkanstoss

    • Moombas
    • 24. November 2023 um 11:30

    Meine Lösung wäre diese:

    AutoIt
    Opt('MustDeclareVars', 1)
    
    #include <array.au3>
    #include <StringConstants.au3>
    
    GLobal Const $source = '<Value1 Key1><Value2 Key2><Value3 Key3>'
    Global $FinalArray = ValueStringsToArray($source)
    
    _ArrayDisplay($FinalArray)
    
    Func ValueStringsToArray($String)
    Local Const $regex = '\<(.*?)\>'
    Local $result = StringRegExp($String, $regex, $STR_REGEXPARRAYGLOBALMATCH)
        _ArrayColInsert($result, 1)
    
        For $Row = 0 to Ubound($result, $UBOUND_ROWS) - 1
            $result[$Row][1] = StringSplit($result[$Row][0], ' ')[1]
            $result[$Row][0] = StringSplit($result[$Row][0], ' ')[2]
        Next
        Return $result
    EndFunc
    Alles anzeigen

    Also erst per Regex separieren und dann nochmal aufsplitten.

    Wegen der Datei: Les die datei doch in ein array mit FileReadToArray und dann jede einzelne Zeile an die Funktion übergeben oder falls du nachher alle in einem Array brauchst, erst mal die Zeilen aneinander hängen (also einen String draus machen) und dann an die Funktion übergeben.

  • SciTE - Farbig hervorheben: Aktuelles Tab Item

    • Moombas
    • 16. November 2023 um 15:54

    Ich meine das war so (Anhand dieser Beispiele und ohne Gewähr.):

    1.: Return SetError(($hWndTab = Null ? 1 : 0), 0, $hWndTab) bzw.: ($hWndTab = Null ? 1 : 0)

    Wenn $hWndTab den Wert Null hat, gebe 1 zurück, sonst 0, sprich: der Errorcode wäre dann 1 bzw. 0, extended immer 0 (,0) und der Rückgabewert $hWndTab (,$hWndTab)

    2.: $sSec = $_sec = Null ? 'scheme' : $_sec

    Wenn $_sec den Wert Null hat, gebe 'scheme' zurück, sonst $_sec, sprich: $sSec wird hier auf 'scheme' oder $_sec gesetzt

    Im Prinzip anhand des letzten Beispiels also:

    AutoIt
    If $_sec = Null then 
        $sSec='scheme' 
    else 
        $sSec=$_sec
    endif

    Es gab dafür auch einen Begriff auf den ich aktuell nicht komme XD

  • Sehr große Zahlen addieren führt zum falschen Ergebnis

    • Moombas
    • 16. November 2023 um 08:06

    Bin da auch bei AspirinJunkie, so lange man von Hexadezimalzahlen spricht muss es eine reine Umwandlung der Deszimahlendarstellung einer Zahl in die Hexadezimaledarstellung sein (der "echte" Zahlenwert darf dabei nicht verändert werden). Das gleiche gilt auch, wenn man die Zahl direkt als Hexadezimalezahl angibt.

    Etwas anderes ist es jedoch, wenn man dies dann auf Bit-Ebene betrachtet ABER genau da muss es dann eine entsprechende Umwandlung mit Prüfungen geben. Sprich: Ist der übergebene Zahlenwert nicht mehr in dem (32)Bit-Bereich darstellbar, weil sich dieser zu 50% in einen positiven als auch zu 50% in einen negativen Bereich einteilt, muss es eine Fehlermeldung geben anstatt einem falschen (definitiv unerwarteten) Ergebnis.

    Aber wie gesagt Bit-Bereich <> Hexadezimalzahl!

  • ListView Markierung mit den Pfeiltasten bewegen

    • Moombas
    • 8. November 2023 um 14:34

    UEZ : Habe mich auch verlesen XD Du hast geschrieben "Wichtig ist, dass nur die ersten zwei Zellen markiert bleiben." ... anstatt Zellen habe ich "Zeilen" gelesen... wer lesen kann ist zweifelsohne im Vorteil

    Dann hätte ich auch zwischendurch eine Lösung präsentieren können -.- Menno^^

  • ListView Markierung mit den Pfeiltasten bewegen

    • Moombas
    • 8. November 2023 um 11:00

    Wie wäre es mit

    1. In den jeweiligen Funktionen für die Pfeiltaste die aktuelle Markierung auslesen und entsprechend der Listview (+/-1) neu zuweisen
    2. Erzwingen der oberen beiden Zeilen, diese zu markieren

    Wobei ich beim Testen mit deinem Code, nie die ID des angeklickten ListView Items bekomme, sondern immer 0 (keins ausgewählt).

    Außerdem musst du den Style vom LV ändern, damit du mehrere Zeilen auswählen kannst. Default ist meine ich, das du nur 1 Zeile zur Zeit auswählen kannst.

    Edit:

    Deine Zeile 74 verhindert zusätzlich eine Multiauswahl.

  • SSH Passwort falsch

    • Moombas
    • 6. November 2023 um 08:13

    casi4712 : Der Hinweis hier von Velted ist gold richtig! Beispiel aus der Hilfe hat er hier ja auch gepostet. Besser geht es nicht!

  • SSH Passwort falsch

    • Moombas
    • 3. November 2023 um 15:56

    Fehlt dem Kopierbefehl nicht ein " ?

  • @SW_HIDE

    • Moombas
    • 3. November 2023 um 12:37

    Peter S. Taler Ich bin wenigstens Sachlich geblieben und ich habe nie gesagt das du etwas irgendwo "geklaut" hast, nur das es sich (ohne Satz vorweg oder hinterher oder irgendwas zusätzlich) wie C&P und aus dem engl. Übersetzt ließt.

    Der Angesprochene Verweis zu einer Quelle (da wäre es genug gewesen das als Zitat zu markieren und z.B. "von mir aus dem AutoIt-Buch" o.ä. hinzuzufügen) hätte das ganze schon verhindert. Und dort ist auch nicht ersichtlich "das dies von dir ist".

    Gehe nicht davon aus das jeder hier soetwas immer auf dem Schirm hat, das dies hier mal Thema war.

    Im Gegensatz zu dir hast du von mir mind. 2 Entschuldigungen für falsche Annahmen bekommen, du machst jedoch schön weiter mit dem Rumgepolter. Fällt mir nix mehr zu ein und macht scheinbar auch keinen Sinn mit dir darüber normal drüber zu "reden".

  • @SW_HIDE

    • Moombas
    • 3. November 2023 um 10:14

    Tut mir leid das ich beim geteilten Link, wenn ich nur 2 Seiten sehe, davon ausgehe, das dort nur 2 Seiten existieren...

    Und ich brauche darüber auch nicht diskutieren, Wenn es doch selbst geschrieben ist: Verzeih meine Anmaßung... Arbeite echt mal an deinem Umgang, das ist nicht das erste Mal... man muss nicht immer gleich so austicken und Beleidigungen... (ja ich kenne das Kürzel durchaus) erstmal schön an die eigene Nase fassen -.-

    OT: Eigentlich (auch wenn diese Abkürzung so genutzt wird/wurde) ist die Abkürzung falsch und müsste so lauten: DbDdhakP

  • Sehr große Zahlen addieren führt zum falschen Ergebnis

    • Moombas
    • 3. November 2023 um 10:08

    Liefer bei mir auch das falsche Ergebnis.

    Aber teste mal folgendes (Den "String" erstmal in einen Integer verwandeln, dann rechnen und dann in Hex):

    AutoIt
    Consolewrite(hex(Int($a) + Int($b)) & @CRLF)

    Ausgabe: 00007FFF6E84D372

    Auf die Idee hat mich das hier gebracht: https://www.autoitscript.com/forum/topic/10…&comment=733853

    Der Grund ist das ein String von Hex scheinbar anders behandelt wird als eine Zahl.

  • @SW_HIDE

    • Moombas
    • 3. November 2023 um 09:40

    Wie ich auf eine Übersetzung komme ist ganz einfach: Das "Sie" wird hier normalerweise nicht genutzt und in Foren auch eher selten bis gar nicht. Die Texte schreien geradezu nach einer Übersetzung (so spricht keiner der Deutsch beherrscht).

    Beispiel: Die Leerzeichen sind doch schon durch AutoIt verbraucht?

    Englisch: The spaces are already used up by AutoIt?

    Wenn du den Text J4F mal komplett wieder zurück übersetzt finde ich das durchaus passend.

    Da ist eindeutig zu sehen, das das Original aus EN stammt, in DE würde man hier nicht "verbaucht", sondern eher "genutzt" o.ä. nutzen.

    Das mit dem "AutoIt Buch" kannte ich hier bisher nicht :saint:, scheint auch einmal angefangen und nie weiter geführt worden zu sein bei 1 Seite Inhalt (Deckblatt zählt nicht).

    Und ja, Quellen sollte man angeben, wenn man sich das irgendwoher holt. Immer!

    Und ja, deine Freundlichkeit ist mal wieder grenzenlos...

  • DriveMapAdd verlangt Netzwerkanmeldung

    • Moombas
    • 2. November 2023 um 08:15

    water : Korrigiert. Ich Depp habe das bei C&P vergessen XD

    Das stimmt, es sollten dann die aktuellen Credentials benutzt werden, ggf. ist das von hipfzwirgel so ja auch gewünscht (so verstehe ich den ersten Post). Sonst müsste ja bei diesen Parametern entsprechend Benutzername und Passwort mit angegeben werden oder wie du ein leerer String um die Eingabe zu erzwingen. Wobei, müsste das nicht mit $DMA_AUTHENTICATION auch passieren?

  • @SW_HIDE

    • Moombas
    • 2. November 2023 um 08:10

    Warum postet du das hier nochmal Peter S. Taler ? Und dann noch copy/paste die Übersetzung aus einem Englischen Beitrag/Artikel?

    Er/Sie hat es doch schon verstanden...

    Angel Ich persönlich empfehle daher Grundsätzlich ' für den Start/Ende des Strings zu nutzen, dann passiert dieses Problem fast gar nicht mehr. ;)

  • @SW_HIDE

    • Moombas
    • 1. November 2023 um 12:54

    Ggf. einfachere Erklärung: Wie Kanshius angesprochen hat, ist das Problem, das du Leerzeichen hast, die du im CMD Befehl richtigerweise mit "" einklammerst.

    Da du aber "" in Autoit auch zur Definition des Strings nutzt passt das ganze nicht mehr.

    Das ganze kannst du auch einfach lösen indem du ' in Autoit für den Start/Ende des Strings nutzt (oder wie Kanshius machst):

    AutoIt
    ;Deins:
    ;C:\Utils32\svcl.exe /SetVolume "Stereomix" 80 ist Run("C:\Utils32\svcl.exe /SetVolume "Stereomix" 80, @SW_HIDE)
    Run("C:\Utils32\svcl.exe /SetVolume "Stereomix" 80, @SW_HIDE) ;Schau dir die Farbliche Formatierung hier im Forum an, da siehst du schon das passt nicht!
    ;Zusätzlich Parameterreihenfolge von Run beachten! (https://www.autoitscript.com/autoit3/docs/functions/Run.htm)
    
    ;Richtig:
    Run('C:\Utils32\svcl.exe /SetVolume "Stereomix" 80', @ScriptDir, @SW_HIDE)
    
    ;Weiteres Beispiel:
    ;C:\Utils32\svcl.exe /Disable "NVIDIA High Definition Audio\Device\ROG PG348Q\Render" all
    Run("C:\Utils32\svcl.exe /Disable "NVIDIA High Definition Audio\Device\ROG PG348Q\Render" all", @ScriptDir, @SW_HIDE) ;Falsch
    Run('C:\Utils32\svcl.exe /Disable "NVIDIA High Definition Audio\Device\ROG PG348Q\Render" all', @ScriptDir, @SW_HIDE) ; Richtig
    Alles anzeigen

    Wobei Kanashius hier durchaus eine gute komplette Lösung geliefert hat.

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™