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

  • parameter parsen mit Leerzeichen im Pfad

    • Moombas
    • 3. Juni 2024 um 12:02

    Wie gesagt, der Fehler liegt (mind.) in Zeile 11.
    Als erstes sein Beispiel ausgeführt (nur Zeile 11), dann die gleiche Zeile nur mit meinen Änderungen (ja ich habe das Leerzeichen nach dem -Idummy im Test vergessen, solltest du aber setzen :P )

    Also in deinem Skript Zeile 30 anpassen (ungetestet): Return "' " & $params & ' "' & $splayer & '"' & " -Idummy '"

  • parameter parsen mit Leerzeichen im Pfad

    • Moombas
    • 3. Juni 2024 um 11:03

    Aber Zeile 11 funktioniert so auch? Kann ich mir gerade schwerlich vorstellen:

    "..." + $var + "..."c:\Program Files\VideoLAN\VLC\vlc.exe"..." + $var2

    Müsste das nicht eher so sein:

    "..." + $var + '...' + $var2

    wobei '...' = ' -i "c:\Program Files\VideoLAN\VLC\vlc.exe" -Idummy '

    Das führt zu:

    "-u $username -p $password \\" + $computer + ' -i "c:\Program Files\VideoLAN\VLC\vlc.exe" -Idummy ' + $batchFilePath


    Also 2 " müssen in ' geändert werden und hinter -Idummy muss ein Leerzeichen hinzugefügt werden. (Sorry für das Englisch bevor :D )

  • Excel 2003 Formelfindung (gelöst)

    • Moombas
    • 3. Juni 2024 um 08:14

    Ja Excel hat einige "versteckte" bzw. nicht ganz so offensichtliche Kniffs :D

  • parameter parsen mit Leerzeichen im Pfad

    • Moombas
    • 3. Juni 2024 um 08:06

    JPG: Genrell, macht es Sinn parameter ohne inhalt (start "") zu übergeben? oder ist das wie Aspirinjunkie angesprochen hat, ggf. eher ein Formatirungsfehler?

    MP3: gehört der Parameter -Idummy nicht ggf zu vlc und muss ggf. mit in die "" eingekapselt werden? (da bin ich mir aktuell unsicher!)

    Aber generell stimme ich AspirinJunkie zu:

    Lass das Skript die entsprechende batch erzeugen und führe sie dann mal manuell aus in einem PS fenster und schaue was er dir dann als Fehlermeldung raus wirft bzw. ggf. siehst du dann auch shcon den Formtierungsfehler in der batch

  • Excel 2003 Formelfindung (gelöst)

    • Moombas
    • 3. Juni 2024 um 07:56

    Alternativ die betroffene Zeile (mit dem richtigen Inhalt/Formel) anklicken und dann doppelt auf das + unten rechts klicken.
    Excel (nicht sicher ob in 2003 shcon integriert) zieht das dann autom. bis nach ganz unten orientiert siuch dabei an der Spalte links davon.
    Sprich wenn in der Aplate links davon in Zeile 98 der letzte Inhalt steht, autom. bis dahin und nicht weiter und man braucht es nicht manuell runter ziehen ;)

  • Zeitreihe Regressionsanalyse Trendberechnung

    • Moombas
    • 30. Mai 2024 um 07:58

    Naja, würde hier keinen Grund sehen dich anzupfeiffen.

    Du hasteine programmiertechnische (Umsetzungs-) Frage gestellt. Hätte das eher im Hilfe Bereich als im Talk gesehen aber ich habe hier noch nie jemanden gesehen, der deswegen nen Larry macht.
    Max. ein kurzer Hinweis mit der Bitte an nen Mod zum verschieben. Also mach dir dahingehend mal keinen Kopf.

    Und mein Vorschlag kam eben aus dem Grund den AspirinJunkie genannt hat: Es ist halt sehr komplex und nicht mal eben einfach umzusetzen. Mir selber wäre auch das mit der linearen Umsetzung zu hoch gewesen (hab dazu leider keine wirklich gute Doku zu den benötigten Formeln gefunden). Daher mein Vorschlag mit dem kleineren Übel mit dem Umweg über Excel (da mit den Formeln "Schätzer" und "Trend" dort schon alle Grundsteine vorliegen, siehe Link den ich gepostet hatte) .

  • Zeitreihe Regressionsanalyse Trendberechnung

    • Moombas
    • 29. Mai 2024 um 15:47

    von händisch ahbe ich nix gesagt, Makros brauchst du dort auch nicht programmieren...
    Du hast meinen Ansatz wohl nicht verstanden:
    Die Daten (per Autoit) in einer ExcelDatei bereitstellen (aus DB in Excel).
    Die Formeln (per Autoit) in dieser für die Entsprechenden Zellen hinzufügen

    Was du dann mit dem Resultat machst (die Daten daraus wieder holen und in deine DB schreiben oder direkt in Excel einfach anzuzeigen), wäre dann dir überlassen.
    Wenn du natürlich kein Excel hast, wirds schwierig.

    Ich habe und kenne leider keine Einzige Funktion oder UDF die so etwas kann.
    Ansonsten müsste jemand die entsprechenden dafür notwendigen Rechenoperationen in AutoIt umsetzen.

  • Zeitreihe Regressionsanalyse Trendberechnung

    • Moombas
    • 29. Mai 2024 um 13:09

    Diagramme sind ja optional.

    Aber Excel kann es entsprechend darstellen/berechnen.

    Ggf. musst du mit Autoit nur die entsprechenden Daten in die Excel-Datei zur Verfügung stellen.

  • Zeitreihe Regressionsanalyse Trendberechnung

    • Moombas
    • 29. Mai 2024 um 08:44

    Blöde Frage aber Excel (Diagramme) können das ja auch, wäre das nicht einfacher zu nutzen als es noch in Autoit zu programmieren?
    Link zu einem Guide: https://www.tabellenexperte.de/trendanalysen-mit-excel/

  • GUI - dynamische Button mit Daten aus DB erstellen

    • Moombas
    • 17. Mai 2024 um 15:32

    Eine Anmerkung noch, was ich eben ignoriert habe:

    Solltest du deine auskommentierte Zeile (Zeile 34) nutzen, funktioniert das "-1" ggf. nicht mehr.
    Ich würde daher zur Sicherheit $label eintragen (Zeile 35, wie du es ja davor (Zeile 33) auch gemacht hast).
    Aber ggf. bin ich einfach Paranoid :D

  • GUI - dynamische Button mit Daten aus DB erstellen

    • Moombas
    • 17. Mai 2024 um 14:42

    Doch das passt so.

    Zeile 29 & 32 solltest du noch als Global (bzw. ich bevorzuge hier Global const) definieren.

  • Frage zu seltsamen Verhalten von _WinAPI_CopyFileEx

    • Moombas
    • 17. Mai 2024 um 08:04

    Ich habe meinen Fehler oben übrigens behoben, ich muss 2mal aus der Schleife springen, das habe ich übersehen.

    Aber dein Problem bleibt leider... und alle meine Tests sind auch im Sande verlaufen. Sobald du während des kopierens es versuchst zu verschieben, hängt es sich auf.

  • Frage zu seltsamen Verhalten von _WinAPI_CopyFileEx

    • Moombas
    • 16. Mai 2024 um 16:00

    Den Part habe ich aber quasi untouched (außer der Kürzung immer in der Schleife alle 3 Sekunden die Laufwerke abzufragen, welche von dir kommt) ohne diese vorab zu prüfen und dann ggf. wieder in der Schleife).

    Habe die MSgbox aber mal an die dann richtige Stelle verschoben.

  • Frage zu seltsamen Verhalten von _WinAPI_CopyFileEx

    • Moombas
    • 16. Mai 2024 um 14:31

    Hier mal meine überarbeitete Variant, schau sie dir mal an:

    AutoIt
    Opt('MustDeclareVars', 1)
    #include <AutoItConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <APIFilesConstants.au3>
    #include <Misc.au3>
    #include <WinAPIError.au3>
    #include <WinAPIFiles.au3>
    
    Opt('TrayAutoPause', 0)
    
    ; Beispiel: Label des USB-Sticks
    Global $desiredLabel = "Backup" ; Hier das gewünschte Label einfügen
    Global $sSource = "C:\Test.zip"
    
    CheckUSBStick($desiredLabel, $sSource)
    
    Func CheckUSBStick($label, $Source)
    Local $sDestiUsb, $a_driveList
    Local Const $hProgressProc = DllCallbackRegister('_ProgressProc', 'bool', 'uint64;uint64;uint64;uint64;dword;dword;handle;handle;ptr')
    
    	While 1
    		; Überprüfen, ob ein USB-Stick mit dem Label "Backup" angeschlossen ist
    		$a_driveList = DriveGetDrive("REMOVABLE")
    		if @error <> 1 then
    			For $i = 1 To $a_driveList[0]
    				If DriveGetLabel($a_driveList[$i] & "\") = $label Then
    					$sDestiUsb = $a_driveList[$i] & "\" & StringSplit($sSource, '\')[StringSplit($sSource, '\')[0]] ;Pfad + Dateiname
    					ExitLoop 2 ; Die Schleife beenden, wenn der Stick gefunden wurde
    				EndIf
    			Next
    		EndIf
    		MsgBox(48, "USB-Stick nicht erkannt", "Bitte schließen Sie den USB-Stick mit dem Label 'Backup' an.", 3000)
    		;Sleep(3000) ; 3 Sekunden warten, bevor erneut überprüft wird
    	WEnd
    
    	ProgressOn('Kopieren', 'Kopiert...', '0%')
    
    	If Not _WinAPI_CopyFileEx($Source, $sDestiUsb, 0, DllCallbackGetPtr($hProgressProc)) Then
    		_WinAPI_ShowLastError('Kopierfehler: ' & $Source)
    	EndIf
    
    	DllCallbackFree($hProgressProc)
    	ProgressOff()
    EndFunc
    
    
    Func _ProgressProc($iTotalFileSize, $iTotalBytesTransferred, $iStreamSize, $iStreamBytesTransferred, $iStreamNumber, $iCallbackReason, $hSourceFile, $hDestinationFile, $pData)
        #forceref $iStreamSize, $iStreamBytesTransferred, $iStreamNumber, $iCallbackReason, $hSourceFile, $hDestinationFile, $pData
    
        Local $iPercent = Round($iTotalBytesTransferred / $iTotalFileSize * 100)
        If $iPercent = 100 Then
            ProgressSet($iPercent, '', 'Fertig')
        Else
            ProgressSet($iPercent, $iPercent & '%')
        EndIf
        Sleep(10) ; Kopierprozess verlangsamen, um die Progressbar zu sehen
    
        If _IsPressed('1B') Then	; 1B = ESC-Taste
            Return $PROGRESS_CANCEL
        Else
            Return $PROGRESS_CONTINUE
        EndIf
    EndFunc   ;==>_ProgressProc
    Alles anzeigen
  • Frage zu seltsamen Verhalten von _WinAPI_CopyFileEx

    • Moombas
    • 16. Mai 2024 um 14:07

    Das was mich wundert ist, das es per default ja ein unverschiebbares Fenster ist (wenn man sich die Parameter in der Hilfe anschaut).

    Die Frage ist, was ändert etwas daran?

    Zeile 46 ist Fehlerhaft: $sDestiUsb = $sPath & "\Test.zip" -> $sDestiUsb = $s_Path & "\Test.zip"

    Btw.: Zeile 20-37, 47,51-53,56,67 kannst du dir meiner Meinung nach sparen
    Zeile 54 sind 300ms und keine 3 Sek. (3000 ms)

  • Ordnerverzeichnis auslesen und in Array speichern, anschließendes weiterverarbeiten

    • Moombas
    • 15. Mai 2024 um 11:08

    Ok, dann habe ich das dort überlesen und du ( Velted) hast natürlich absolut recht :D

    Aber schon etwas merkwürdig, da es sich dann danach anhört, als wären Leerzeichen im Profilnamen generell untersagt...

    Eine andere Idee um das dann zu umgehen wäre die Leerzeichen z.B. mit _ zu ersetzen befor das Profil erstellt wird.
    Also aus Ordnername "User Name" wird der Profilname "User_Name" erstellt.

  • Ordnerverzeichnis auslesen und in Array speichern, anschließendes weiterverarbeiten

    • Moombas
    • 15. Mai 2024 um 08:15

    Ja das mit den Leerzeichen im Namen ist ein Problem (steht so aber auch in der Doku), deswegen j´hatte ich gehofft mit der Verwendung der " das zu umgehen, frei nach dem Motto "wenn kein Profilordner angegeben wurde, nehme den Default-Ordner"

    Aber um das zu fixen, prüfe doch mal bei einem Gerät wenn du erfolgreich Profile (ohne ") erstellst wo diese abgelegt werden, und gebe dann den entsprechenden Pfad mit bei Verwendung der ", dann deckst du alle Möglichkeiten ab.

  • Erkennung ob ein bestimmter USB-Stick angeschlossen ist

    • Moombas
    • 15. Mai 2024 um 08:11

    Alina : Ich denke das in diesem Fall es um ein Installationsmedium geht ist die Seriennummer nicht so hilfreich, weil ggf. mehrere USB-Sticks im Einsatz sind und ggf. auch durchgetauscht werden (müssen) und daher ein Festnageln auf eine oder wneige Seriennummern nicht Zielführend wäre.

  • FFplay AutoitKonsole auslesen

    • Moombas
    • 14. Mai 2024 um 07:47
    Zitat von Kanashius

    Hi :)
    Das Hauptproblem ist, dass ff* nicht auf StdOut schreibt, sondern aus irgendeinem Grund auf StdErr.

    Da wäre ich auch nie drauf gekommen -.-

    Erklärt aber warum alle meine nachgelagerten Tests nix ausgeworfen haben :Face:

  • FFplay AutoitKonsole auslesen

    • Moombas
    • 13. Mai 2024 um 15:37

    Das Problem mit Opt('MustDeclareVars', 1) könnte daran liegen, das ich eine Variable vergessen hatte zu deklarieren, habe ich oben aber geändert (Änderung Zeile 42). Auch in Zeile 10 deine falsche Deklaration von Local auf Global noch geändert (das hatte ich auch noch übersehen).

    Eine Abfrage ob wirklich die relevante Zeile schon ausgegeben wird habe ich auch mit eingebaut.

    Wichtig wäre aber eine Prüfung z.B. via MsgBox was überhaupt ausgelesen wird mit dem StdoutRead in Zeile 34.

    Wobei (aber da muss mich jetzt jemand korrigieren) ich glaube das deine Whileschleife bis zum Filende läuft richtig?
    Wenn das stimmt, dann musst du Zeile 32 und 33 entfernen und Zeile 34 und 35 in die Schleife einbauen.

    Nur ohne das hier wirklich testen zu können finde ich das immer ewtas schwer.

    Folgendes funktioniert auf jeden fall für die Filmdauer:

    AutoIt
    Opt('MustDeclareVars', 1)
    #include <GUIConstantsEx.au3>
    #include <EditConstants.au3>
    #include <GuiEdit.au3>
    
    Global $PID_ff, $Time
    Global $hGUI = GUICreate("Spieldauer anzeigen", 1000, 500, -1, -1)
    Global $StartButton = GUICtrlCreateButton("Video wählen", 10, 10, 100, 30)
    Global $laufendeabspielzeit = GUICtrlCreateInput("", 120, 15, 100, 20, $ES_READONLY)
    Global $Filmdauer = GUICtrlCreateInput("", 230, 15, 100, 20, $ES_READONLY)
    
    Global $Edit1 = GUICtrlCreateEdit("", 10, 50, 980, 440)
    GUICtrlSetData(-1, "")
    _GUICtrlEdit_SetLimitText($Edit1, -1) ;kein Limit -1
    
    GUISetState(@SW_SHOW, $hGUI)
    
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                 Exit
    
            Case $StartButton
    			 $PID_ff = _Filmlaenge()
    
    		Case $laufendeabspielzeit
    
    		Case $Filmdauer
    
    		Case $Edit1
    
    		Case Else ;Die Zeit aktualisieren - ggf. zu häufig (10* je Sek.), bitte prüfen
    			 if not ProcessExists('ffprobe.exe') then Continueloop
    
        EndSwitch
        sleep(100); Offset für nicht zu häufiges Abfragen
    WEnd
    
    
    Func _Filmlaenge()
    Local $sFilmlaenge, $line
    Local Const $sinput = @ScriptDir & "\film1.mp4" ; FileOpenDialog("Wähle ein Video aus", @ScriptDir, "Datei (*.mp4;*.*;*;)", 1)
    Local Const $iPID   = Run(@ComSpec & ' /c ffplay.exe -stats ' & """" & $sinput & """", @ScriptDir, @SW_HIDE, $STDOUT_CHILD)
    Local Const $cmd    = 'ffprobe.exe ' & '"' & $sinput & '"' & ' 2>&1 | findstr Duration' ; ermittelt die Filmlänge des Filmes
    Local Const $handle = Run(@ComSpec & ' /c ' & $cmd, '', @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    
    	While True
    		$line = StdoutRead($handle)
    		If @error Then ExitLoop
    		If StringInStr($line, 'Duration') then
    			$sFilmlaenge = StringRegExp($line, '\d{2}:\d{2}:\d{2}', $STR_REGEXPARRAYMATCH)[0]
    			GUICtrlSetData($Filmdauer, $sFilmlaenge)
    		Endif
    	WEnd
    	ProcessWaitClose($handle)
    
    	Return $iPID
    EndFunc
    Alles anzeigen

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™