Leichenfledderer!
Guck mal auf's Datum.
Beiträge von Oscar
-
-
Das errechnen der Laufzeit funktioniert nur mit CBR-kodierten MP3s, nicht bei VBR.
Ich habe jetzt aber ein Workaround gefunden. Ich lese (wenn GetDetailsOf nicht erfolgreich war) die Laufzeit mit _SoundLenght aus.Neue Version in Post #1.
-
Zitat aus der Hilfe:
Zitat@WorkingDir is changed on successful return.
Bei FileOpen musst Du also auch den ganzen Pfad angeben (@ScriptDir hinzufügen). -
Achso, in eine Webseite, dann schau Dir lieber mal die _IE-Funktionen in der Hilfe an.
-
Das kann doch gar nicht sein.
Ich habe zwar mittlerweile rausgekriegt, dass die Informationen bei den verschiedenen Windows-Versionen an anderer Stelle sind (deshalb die Abfrage am Anfang), aber dass sie gar nicht zurückgegeben werden ist mir neu.
Kann das sonst noch jemand bestätigen?
Weil, ich habe auch WindowsXP und bei mir wird bei all meinen MP3s (auch die VBR-codierten) die Laufzeit ausgegeben. -
Besser als eine For...Next-Schleife zum auslesen ist es, wenn Du Endlosschleifen dafür verwendest, weil Du ja nicht vorher wissen kannst, wie viele Zeilen und Spalten es in der Tabelle gibt.
Hier mal ein Beispiel:Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <Excel.au3>$oExcel = _ExcelBookNew()
[/autoit] [autoit][/autoit] [autoit]; diese For...Next-Schleifen erstellen nur eine Exceltabelle mit unterschiedlichen "Zeilenlängen"
[/autoit] [autoit][/autoit] [autoit]
For $i = 1 To 20
For $j = 1 To Random(5, 15, 1)
_ExcelWriteCell($oExcel, Random(100, 999, 1), $i, $j)
Next
Next; ab hier werden die Daten aus der Tabelle ausgelesen
[/autoit] [autoit][/autoit] [autoit]
$row = 1
$col = 1
$out = ''
While True
$val = _ExcelReadCell($oExcel, $row, $col)
If $val = '' Then
If $col = 1 Then ExitLoop
MsgBox(0, 'Zeile ' & $row, $out)
$out = ''
$col = 1
$row += 1
ContinueLoop
EndIf
$out &= $val & ', '
$col += 1
WEndMsgBox(0, '', 'ok zum beenden')
[/autoit]
_ExcelBookClose($oExcel)Wenn Du jetzt die Daten woanders einfügen willst, kannst Du das mit ControlCommand oder ControlSend machen. Dazu brauchst Du aber zusätzliche Informationen über das andere Programm.
Diese bekommst Du mit "Au3Info.exe" aus dem AutoIt-Verzeichnis. -
Ok, das mit IsArray war ein Bug. Aber eigentlich dürfte er sich gar nicht bemerkbar machen. Der Fehler liegt tiefer versteckt. Da wird die Laufzeit nicht richtig ermittelt.
Kannst Du mal dieses Script bei Dir mit einem MP3 testen:Spoiler anzeigen
[autoit]
[/autoit]
#include <Array.au3>
$sPath = FileOpenDialog('Test', '', '(*.mp3)', 3, '')
$aProperty = GetExtProperty($sPath, -1)
_ArrayDisplay($aProperty)
$hFile = FileOpen(@ScriptDir & '\Ausgabe-Array.txt', 2)
If $hFile <> -1 Then
For $i = 0 To UBound($aProperty) - 1
FileWriteLine($hFile, $aProperty[$i])
Next
FileClose($hFile)
EndIf
;===============================================================================
; Function Name: GetExtProperty($sPath,$iProp)
; Description: Returns an extended property of a given file.
; Parameter(s): $sPath - The path to the file you are attempting to retrieve an extended property from.
; $iProp - The numerical value for the property you want returned. If $iProp is is set
; to -1 then all properties will be returned in a 1 dimensional array in their corresponding order.
; The properties are as follows:
; Name = 0
; Size = 1
; Type = 2
; DateModified = 3
; DateCreated = 4
; DateAccessed = 5
; Attributes = 6
; Status = 7
; Owner = 8
; Author = 9
; Title = 10
; Subject = 11
; Category = 12
; Pages = 13
; Comments = 14
; Copyright = 15
; Artist = 16
; AlbumTitle = 17
; Year = 18
; TrackNumber = 19
; Genre = 20
; Duration = 21
; BitRate = 22
; Protected = 23
; CameraModel = 24
; DatePictureTaken = 25
; Dimensions = 26
; Width = 27
; Height = 28
; Company = 30
; Description = 31
; FileVersion = 32
; ProductName = 33
; ProductVersion = 34
; Requirement(s): File specified in $spath must exist.
; Return Value(s): On Success - The extended file property, or if $iProp = -1 then an array with all properties
; On Failure - 0, @Error - 1 (If file does not exist)
; Author(s): Simucal ([email='Simucal@gmail.com'][/email])
; Note(s):
;
;===============================================================================
Func GetExtProperty($spath, $iProp)
Local $iExist, $sFile, $sDir, $oShellApp, $oDir, $oFile, $aProperty, $sProperty
$iExist = FileExists($spath)
If $iExist = 0 Then
SetError(1)
Return 0
Else
$sFile = StringTrimLeft($spath, StringInStr($spath, '\', 0, -1))
$sDir = StringTrimRight($spath, (StringLen($spath) - StringInStr($spath, '\', 0, -1)))
$oShellApp = ObjCreate('shell.application')
$oDir = $oShellApp.NameSpace($sDir)
$oFile = $oDir.Parsename($sFile)
If $iProp = -1 Then
Local $aProperty[35]
For $i = 0 To 34
$aProperty[$i] = $oDir.GetDetailsOf($oFile, $i)
Next
Return $aProperty
Else
$sProperty = $oDir.GetDetailsOf($oFile, $iProp)
If $sProperty = '' Then
Return 0
Else
Return $sProperty
EndIf
EndIf
EndIf
EndFunc
An welcher Stelle wird da die Laufzeit angezeigt? -
AdlibDisable gibt es auch noch in der Beta.

Kannst Du zum Fehler bitte mal genauere Angaben machen:
- Windows-Version?
- Exe oder Script benutzt?
- Wie hinzugefügt (Drag 'n Drop, [+]-Button)?
- Was ist das für ein MP3? CBR oder VBR? Welche Bitrate? ID3-Tags vorhanden? -
Version 2.7.1 ( 05.10.2009 )
Die neue Version vom Starplayer unterscheidet sich von der alten in einigen Dingen und deswegen mache ich mal einen neuen Thread auf.
Vielleicht möchte ja der ein oder andere lieber die alte Version benutzen.Hier erstmal ein Screenshot von der neuen Version:
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Was ist neu?
- Der gerade gespielte Titel wird im Listview orange angezeigt (das ist nicht die Markierung vom selektieren).
- Status-Anzeige: Anzahl der Dateien (Bytes) sowie die Gesamtspieldauer aller Lieder in der Playlist.
- Es gibt einen Umschalt-Button, um die Playlist auf Endloswiedergabe zu schalten (Wiederholung der gesamten Playlist).
- Mute-Button (der mit dem Lautsprecher drauf) unten rechts schaltet den Ton stumm.
- Die Progressbar auf der rechten Seite kann mit dem Mausrad rauf-/runtgeregelt werden, wenn der Lautsprecher-Button blau ist. Außerdem kann die Lautstärke auch durch hineinklicken in die Progressbar geregelt werden.
- Einzelne Titel kann man nun mit den beiden Buttons auf der linken Seite nach oben bzw. unten verschieben.
- Alle Dateien aus der Playlist lassen sich exportieren (der Button mit dem Handy drauf). Dabei werden die Dateien in ein auswählbares Verzeichnis kopiert und es wird eine passende Playlist erzeugt. Gut geeignet zum füllen von tragbaren MP3-Playern/Handys.Weitere Features (gab es schon in der alten Version):
- Doppelklick auf einen Eintrag spielt diesen ab.
- Mausklick in die Song-Progressbar springt an die entsprechende Stelle im Lied.
- Zufallssortierung der Playlist.
- Laden/Speichern der Playlist.
- Drag and Drop von MP3s bzw. ganzen Verzeichnissen mit MP3s (hier allerdings nicht rekursiv).
- Fensterposition wird abgespeichert.
- Minimieren in den Traybereich (auswählbar).
- Immer im Vordergrund (auswählbar).Wen die Tooltips bei den Buttons stören, der kann in der Inidatei (c:\Dokumente und Einstellungen\Anwendungsdaten\Starplayer2\Starplayer.ini) folgenden Eintrag unter "Settings" erstellen:
Die Farben lassen sich im Script ändern. Am Anfang (unter Color-Definition) findet ihr die Farbzuweisungen. Falls ihr andere Farben bevorzugt.
Script, Icons und Exedatei findet ihr im ZIP-Archiv.
Für Verbesserungsvorschläge, Kritik und Fehlermeldungen stehe ich immer zur Verfügung.

Edit 01.10.09 Version 2.1 :
- Bug mit der Laufzeit behoben. Wenn "GetDetailsOf" nichts oder etwas falsches zurückgibt, wird nun die Datei mit _SoundOpen geöffnet und mit _SoundLength die Laufzeit ausgelesen. Nachteil ist, dass das dann etwas länger dauert.Edit 03.10.09 Version 2.2 :
- Die Laufzeit eines MP3s wird nun durch eine Funktion "_GetMP3Info" von "YDY (Lazycat) <mpc@nm.ru>" (Danke für die Funktion, Lazycat!) ermittelt, falls "GetDetailsOf" nicht erfolgreich war. Und erst, wenn auch diese Funktion versagt, wird die Laufzeit über _SoundLength ausgelesen. So geht das einlesen wieder schneller.
- Man kann den Starplayer als Standard-MP3-Player registrieren lassen: im Menü "Options" gibt es jetzt einen Eintrag "Register ".mp3" to Starplayer". Danach kann man einfach einen Doppelklick auf eine MP3-Datei machen und diese wird dann mit dem Starplayer abgespielt. Wenn der Starplayer bereits gestartet ist, dann wird bei einem Doppelklick die MP3-Datei dem Ende der Playlist hinzugefügt.Edit 03.10.09 Version 2.3 :
- Es gab Probleme, wenn man sehr viele (>200 Stück) MP3s in der Playlist hatte. Dann wurde die Reaktion auf den Prev- bzw. Next-Button sehr lahm. Fehler behoben!
- AdlibRegister ausgetauscht gegen _Timer_SetTimer. Mit _Timer_SetTimer wird die Laufzeitanzeige auch dann aktualisiert, wenn man das Menü öffnet. Außerdem funktioniert das Script so auch mit der letzten Stable-Version von AutoIt. Die Beta wird nur für den MP3-VBR-Support benötigt.
- Zieht man nun Verzeichnisse (per Drag and Drop) auf die Playlist, so werden diese rekursiv (auch die MP3s aus den Unterverzeichnissen) eingelesen.Edit 04.10.09 Version 2.4 :
- Problem mit dem Mehrfachaufruf behoben. Danke für's testen, Raupi!
- Den blöden Fehler (Laufzeit wurde nicht aktualisiert) aus der 2.3er Version behoben.
- Ein paar kleine Änderungen am Sourcecode.Edit 04.10.09 Version 2.5 :
- _TimerSetTimer musste wieder rausfliegen, weil das beim beenden des Programms einen Absturz erzeugte.
- In der Playlist wird nun zu jedem Titel auch das Album angezeigt (falls in den ID3-TAGs eingetragen).
- die Up-/Down-Buttons haben jetzt eine Wiederholfunktion.
- Im Menü "Options" gibt es einen neuen Eintrag "Play Title immediately when doubleclick in Explorer". Ist hier ein Haken, dann wird der Titel zwar immer noch der Playlist hinzugefügt, aber er wird auch gleich gespielt.
- Die Registrierung als Standard-MP3-Player sollte jetzt korrekt funktionieren. Zumindest bei WindowsXP.Edit 05.10.09 Version 2.6 :
- Das mit dem Timer habe ich nochmal überarbeitet. Jetzt nehme ich $WM_TIMER und damit läuft alles perfekt.
- Zusätzlich zu der Erweiterung ".mp3" wird auch ".m3u" für die Playlist registriert, sodass man auch einen Doppelklick auf eine Playlist machen kann.
- Error-Handling dem Source-Code hinzugefügt, um Fehleingaben des Benutzers zu verhindern.
- Für die MP3- und M3U-Dateien gibt es eigene Standard-Icons. Diese (mp3.ico und m3u.ico) befinden sich im Icons-Unterverzeichnis des Scriptverzeichnisses.Edit 05.10.09 Version 2.7 :
- Ein VU-Meter ist jetzt noch dazugekommen (siehe Screenshot). Ein ganz besonderer Dank geht dafür an Eukalyptus für das tolle Beispiel zur "BassEnc.au3".
- Und es gibt jetzt einen Menüpunkt "Credits", für meine Danksagungen.
Edit 05.10.09 Version 2.7.1 :
- Bei den Dateien "bass.au3" und "bassenc.au3" habe ich die Variable $error in $my_error umbenannt, wegen Compilerfehler.
- Das Audio-Device und -Input wird nun in der Inidatei gespeichert, damit man es nicht bei jedem Programmstart auswählen muss (falls die Standardeinstellung nicht korrekt ist).
- Nach umfangreichen Tests von Raupi (Danke dafür) scheint es so, dass die 2.7er Versionen nur unter WindowsXP einwandfrei laufen. Unter Windows7 geht das VU-Meter nicht und unter Vista funktioniert das Programm gar nicht. Deswegen biete ich mal zusätzlich noch die 2.6er Version zum Download an, bis ich dafür eine Lösung gefunden habe. -
Das Scripting.Dictionary-Objekt wäre auch eine mögliche Alternative.
-
Also ehrlich gesagt, verstehe ich Dein Script nicht wirklich.
Kannst Du das mal kommentieren, was da wo passieren soll.
Falsch ist auf jeden Fall schonmal, dass Du mit "Zeilen" arbeitest. Eine Binärdatei hat keine Zeilen!
Du musst die gesamte Datei ins RAM laden oder mit einem Buffer arbeiten, aber zeilenweise geht nicht. -
Äh...und wo ist das Script?
-
Dann halte Dich endlich mal an unsere Forenregeln!
[Thread closed]

-
Wie, das ist gleich blau, ohne das Du da mit der Maus "drüberfährst"?
Dann muss es doch ein Fehler im Script sein.
-
Ja, jetzt mit den größeren Bildern kann man das erkennen. Das ist in der Tat, wie BugFix schon schrieb, das Problem mit der gedrückten Maustaste.
Kann auch passieren, wenn die Maus schon etwas älter ist und die Maustaste nicht mehr richtig erkannt wird oder bei einer drahtlosen Maus, wenn die Batterien dem Ende entgegen gehen. -
Hmm...das Problem hatte ich noch nicht.
Das Bild von Dir ist zu klein, um etwas erkennen zu können. Hast Du mal ein Beispielscript, wo dieser Fehler auftritt? -
Nein!
Da fehlen zum einen die FileClose (aber das nur am Rande), zum anderen musst Du beim speichern den Parameter "2" benutzen, also "16 + 2" oder halt "18" und (was das wichtigste ist) Du darfst kein Trennzeichen verwenden, weil das ja auch in den Dateien vorkommen könnte. Stattdessen musst Du einen Dateiheader anlegen, indem Du die Dateilänge der einzelnen Dateien ablegst.Edit: BugFix war mal wieder schneller.
-
Und als AutoIt-Beispiel:
[autoit]
[/autoit]
$rechnung = "13,7" ; nehmen wir an, das ("13,7") hast Du eingegeben
$rechnung = StringReplace($rechnung, ',', '.') ; umwandeln des Dezimalkommas in ein Dezimalpunkt
$x = $rechnung/5 ; berechnen
$x = StringReplace($x, '.', ',') ; den Punkt wieder in ein Dezimalkomma wandeln
MsgBox(0, "", $x) -
FileOpenDialog() oder FileSaveDialog()
siehe Hilfedatei -
funkey hat Dir gezeigt, dass AutoIt sehr wohl mit Kommata rechnen kann. Allerdings wird dabei der Dezimalpunkt verwendet. Wenn Du in Deiner GUI das Dezimalkomma verwenden willst, musst Du intern mit dem Dezimalpunkt rechnen (vorher mit StringReplace umwandeln).